Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9b1d1cb9 authored by Dimitry Ivanov's avatar Dimitry Ivanov Committed by android-build-merger
Browse files

Merge "Allow different namespace types for different classloaders"

am: a61c48d5

Change-Id: Idcf998f47e8a09fbe1e56a898f23b2c82a75aa44
parents 3915012a a61c48d5
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;

@@ -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.
  //
+3 −3
Original line number Diff line number Diff line
@@ -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) {
+1 −1
Original line number Diff line number Diff line
@@ -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;
}

+11 −7
Original line number Diff line number Diff line
@@ -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();
      }