[VM] Fix use-after-free: move free after use
Change-Id: Idcedbd8bdbd94f126846c5390c6cb8d00a21de57
Reviewed-on: https://dart-review.googlesource.com/c/91180
Auto-Submit: Martin Kustermann <kustermann@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc
index 784b5f9..27d1244 100644
--- a/runtime/vm/clustered_snapshot.cc
+++ b/runtime/vm/clustered_snapshot.cc
@@ -5061,12 +5061,13 @@
}
RawApiError* FullSnapshotReader::ConvertToApiError(char* message) {
- // The [message] was constructed with [BuildError] and needs to be freed.
- free(message);
-
// This can also fail while bringing up the VM isolate, so make sure to
// allocate the error message in old space.
const String& msg = String::Handle(String::New(message, Heap::kOld));
+
+ // The [message] was constructed with [BuildError] and needs to be freed.
+ free(message);
+
return ApiError::New(msg, Heap::kOld);
}