Loading include/nativebridge/native_bridge.h +2 −2 Original line number Diff line number Diff line Loading @@ -104,7 +104,7 @@ int NativeBridgeUnloadLibrary(void* handle); // Get last error message of native bridge when fail to load library or search symbol. // This is reflection of dlerror() for native bridge. char* NativeBridgeGetError(); const char* NativeBridgeGetError(); struct native_bridge_namespace_t; Loading Loading @@ -244,7 +244,7 @@ struct NativeBridgeCallbacks { // Returns: // A string describing the most recent error that occurred when load library // or lookup symbol via native bridge. char* (*getError)(); const char* (*getError)(); // Check whether library paths are supported by native bridge. // Loading libnativebridge/native_bridge.cc +3 −3 Original line number Diff line number Diff line Loading @@ -551,15 +551,15 @@ int NativeBridgeUnloadLibrary(void* handle) { return -1; } char* NativeBridgeGetError() { const char* NativeBridgeGetError() { if (NativeBridgeInitialized()) { if (isCompatibleWith(NAMESPACE_VERSION)) { return callbacks->getError(); } else { ALOGE("not compatible with version %d, cannot get message", NAMESPACE_VERSION); return "native bridge implementation is not compatible with version 3, cannot get message"; } } return nullptr; return "native bridge is not initialized"; } bool NativeBridgeIsPathSupported(const char* path) { Loading libnativebridge/tests/DummyNativeBridge3.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ extern "C" int native_bridge3_unloadLibrary(void* /* handle */) { return 0; } extern "C" char* native_bridge3_getError() { extern "C" const char* native_bridge3_getError() { return nullptr; } Loading libnativeloader/native_loader.cpp +11 −7 Original line number Diff line number Diff line Loading @@ -308,13 +308,17 @@ class LibraryNamespaces { // code is one example) unknown to linker in which case linker uses anonymous // namespace. The second argument specifies the search path for the anonymous // namespace which is the library_path of the classloader. if (!is_native_bridge) { initialized_ = android_init_namespaces(public_libraries_.c_str(), library_path); initialized_ = android_init_namespaces(public_libraries_.c_str(), is_native_bridge ? nullptr : library_path); if (!initialized_) { *error_msg = dlerror(); return false; } } else { initialized_ = NativeBridgeInitNamespace(public_libraries_.c_str(), library_path); // and now initialize native bridge namespaces if necessary. if (NativeBridgeInitialized()) { initialized_ = NativeBridgeInitNamespace(public_libraries_.c_str(), is_native_bridge ? library_path : nullptr); if (!initialized_) { *error_msg = NativeBridgeGetError(); } Loading Loading
include/nativebridge/native_bridge.h +2 −2 Original line number Diff line number Diff line Loading @@ -104,7 +104,7 @@ int NativeBridgeUnloadLibrary(void* handle); // Get last error message of native bridge when fail to load library or search symbol. // This is reflection of dlerror() for native bridge. char* NativeBridgeGetError(); const char* NativeBridgeGetError(); struct native_bridge_namespace_t; Loading Loading @@ -244,7 +244,7 @@ struct NativeBridgeCallbacks { // Returns: // A string describing the most recent error that occurred when load library // or lookup symbol via native bridge. char* (*getError)(); const char* (*getError)(); // Check whether library paths are supported by native bridge. // Loading
libnativebridge/native_bridge.cc +3 −3 Original line number Diff line number Diff line Loading @@ -551,15 +551,15 @@ int NativeBridgeUnloadLibrary(void* handle) { return -1; } char* NativeBridgeGetError() { const char* NativeBridgeGetError() { if (NativeBridgeInitialized()) { if (isCompatibleWith(NAMESPACE_VERSION)) { return callbacks->getError(); } else { ALOGE("not compatible with version %d, cannot get message", NAMESPACE_VERSION); return "native bridge implementation is not compatible with version 3, cannot get message"; } } return nullptr; return "native bridge is not initialized"; } bool NativeBridgeIsPathSupported(const char* path) { Loading
libnativebridge/tests/DummyNativeBridge3.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ extern "C" int native_bridge3_unloadLibrary(void* /* handle */) { return 0; } extern "C" char* native_bridge3_getError() { extern "C" const char* native_bridge3_getError() { return nullptr; } Loading
libnativeloader/native_loader.cpp +11 −7 Original line number Diff line number Diff line Loading @@ -308,13 +308,17 @@ class LibraryNamespaces { // code is one example) unknown to linker in which case linker uses anonymous // namespace. The second argument specifies the search path for the anonymous // namespace which is the library_path of the classloader. if (!is_native_bridge) { initialized_ = android_init_namespaces(public_libraries_.c_str(), library_path); initialized_ = android_init_namespaces(public_libraries_.c_str(), is_native_bridge ? nullptr : library_path); if (!initialized_) { *error_msg = dlerror(); return false; } } else { initialized_ = NativeBridgeInitNamespace(public_libraries_.c_str(), library_path); // and now initialize native bridge namespaces if necessary. if (NativeBridgeInitialized()) { initialized_ = NativeBridgeInitNamespace(public_libraries_.c_str(), is_native_bridge ? library_path : nullptr); if (!initialized_) { *error_msg = NativeBridgeGetError(); } Loading