Fix unload of recursively linked library
Expanded test for recursive libs. Fixed bug with unnecessary
soinfo_free of already loaded library.
(cherry picked from commit a6ac54a215d6b64f5cc5a59b66c1dbfbb41ea9f5)
Change-Id: I6907c723d9fbdf6b2777f3f236b1e29b0843edd6
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 1b4fb62..acbb1b0 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -843,6 +843,7 @@
}
if ((dlflags & RTLD_NOLOAD) != 0) {
+ DL_ERR("library \"%s\" wasn't loaded and RTLD_NOLOAD prevented it", name);
return nullptr;
}
@@ -950,7 +951,6 @@
soinfo* needed_by = task->get_needed_by();
if (is_recursive(si, needed_by)) {
- soinfo_free(si);
return false;
}