Chromium Code Reviews| Index: runtime/bin/extensions_android.cc |
| diff --git a/runtime/bin/extensions_android.cc b/runtime/bin/extensions_android.cc |
| index 1b7999169d0bcdb309a67e975cd10519eedd6f2a..811c70058638dd574641c418a9cde84aa5a53430 100644 |
| --- a/runtime/bin/extensions_android.cc |
| +++ b/runtime/bin/extensions_android.cc |
| @@ -15,15 +15,27 @@ namespace bin { |
| const char* kPrecompiledLibraryName = "libprecompiled.so"; |
| const char* kPrecompiledSymbolName = "_kInstructionsSnapshot"; |
| -void* Extensions::LoadExtensionLibrary(const char* library_file) { |
| - return dlopen(library_file, RTLD_LAZY); |
| +Dart_Handle Extensions::LoadExtensionLibrary(const char* library_file, |
| + void** library_handle) { |
| + ASSERT(library_handle != NULL); |
| + *library_handle = dlopen(library_file, RTLD_LAZY); |
| + if (*library_handle == NULL) { |
| + return Dart_NewApiError(dlerror()); |
| + } |
| + return Dart_Null(); |
| } |
| -void* Extensions::ResolveSymbol(void* lib_handle, const char* symbol) { |
| +Dart_Handle Extensions::ResolveSymbol(void* lib_handle, |
| + const char* symbol, |
| + void** init_function) { |
| + ASSERT(init_function != NULL); |
| dlerror(); |
| - void* result = dlsym(lib_handle, symbol); |
| - if (dlerror() != NULL) return NULL; |
| - return result; |
| + *init_function = dlsym(lib_handle, symbol); |
| + char* err_str = dlerror(); |
| + if (err_str != NULL) { |
| + return Dart_NewApiError(err_str); |
|
Søren Gjesse
2015/10/14 07:00:25
Drop the temp err_str like above?
siva
2015/10/14 18:13:19
It is not possible to drop the temp err_str, see c
|
| + } |
| + return Dart_Null(); |
| } |
| } // namespace bin |