Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(968)

Unified Diff: runtime/bin/extensions.cc

Issue 1403683007: Fix for issue 23908 - error message reports the exact error when a native extension fails to load. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: code-review Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/bin/extensions.cc
diff --git a/runtime/bin/extensions.cc b/runtime/bin/extensions.cc
index 3b029714360dff01d009c1d710325c707038ca01..49e56151e53f2310b42ed71b269a3b290e7b7a61 100644
--- a/runtime/bin/extensions.cc
+++ b/runtime/bin/extensions.cc
@@ -26,22 +26,25 @@ Dart_Handle Extensions::LoadExtension(const char* extension_directory,
}
const char* library_strings[] = { extension_directory, extension_file, NULL };
char* library_file = Concatenate(library_strings);
- void* library_handle = LoadExtensionLibrary(library_file);
+ void* library_handle = NULL;
+ Dart_Handle result = LoadExtensionLibrary(library_file, &library_handle);
free(library_file);
- if (library_handle == NULL) {
- return Dart_NewApiError("Cannot find extension library");
+ if (Dart_IsError(result)) {
+ return result;
}
+ ASSERT(library_handle != NULL);
const char* strings[] = { extension_name, "_Init", NULL };
char* init_function_name = Concatenate(strings);
- typedef Dart_Handle (*InitFunctionType)(Dart_Handle import_map);
- InitFunctionType fn = reinterpret_cast<InitFunctionType>(
- ResolveSymbol(library_handle, init_function_name));
+ void* init_function = NULL;
+ result = ResolveSymbol(library_handle, init_function_name, &init_function);
free(init_function_name);
-
- if (fn == NULL) {
- return Dart_NewApiError("Cannot find initialization function in extension");
+ if (Dart_IsError(result)) {
+ return result;
}
+ ASSERT(init_function != NULL);
+ typedef Dart_Handle (*InitFunctionType)(Dart_Handle import_map);
+ InitFunctionType fn = reinterpret_cast<InitFunctionType>(init_function);
return (*fn)(parent_library);
}

Powered by Google App Engine
This is Rietveld 408576698