[vm] Fix several kernel-specific memory leaks.

Bug: https://github.com/dart-lang/sdk/issues/32615
Change-Id: Ic969915c6084b9deef0d86c8f8a0e9aa4f4640e5
Reviewed-on: https://dart-review.googlesource.com/47321
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
This commit is contained in:
Ryan Macnak 2018-03-20 23:23:49 +00:00 committed by commit-bot@chromium.org
parent b7c3c32f63
commit 00ec3b0867
3 changed files with 3 additions and 2 deletions

View file

@ -368,6 +368,7 @@ DartUtils::MagicNumber DartUtils::SniffForMagicNumber(const char* filename) {
if (File::GetType(NULL, filename, true) == File::kIsFile) {
File* file = File::Open(NULL, filename, File::kRead);
if (file != NULL) {
RefCntReleaseScope<File> rs(file);
intptr_t max_magic_length = 0;
max_magic_length =
Utils::Maximum(max_magic_length, snapshot_magic_number.length);
@ -382,7 +383,6 @@ DartUtils::MagicNumber DartUtils::SniffForMagicNumber(const char* filename) {
if (file->ReadFully(&header, max_magic_length)) {
magic_number = DartUtils::SniffForMagicNumber(header, sizeof(header));
}
file->Close();
}
}
return magic_number;

View file

@ -165,7 +165,6 @@ static Dart_Isolate CreateIsolateAndSetup(const char* script_uri,
DART_KERNEL_ISOLATE_NAME, main, isolate_snapshot_data,
isolate_snapshot_instructions, flags, isolate_data, error);
if (isolate == NULL) {
*error = strdup("Failed to create isolate");
delete isolate_data;
return NULL;
}

View file

@ -101,6 +101,8 @@ class RunKernelTask : public ThreadPool::Task {
OS::PrintErr(DART_KERNEL_ISOLATE_NAME ": Isolate creation error: %s\n",
error);
}
free(error);
error = NULL;
KernelIsolate::SetKernelIsolate(NULL);
KernelIsolate::FinishedInitializing();
return;