summaryrefslogtreecommitdiff
path: root/linker/linker.cpp
diff options
context:
space:
mode:
authorDimitry Ivanov <dimitry@google.com>2017-05-16 22:21:22 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-05-16 22:21:22 +0000
commitefbc04475e1566e1565f2ca095473545c673edd5 (patch)
tree9a0f5183aae6c847b6d79533b43f247b2e71ad49 /linker/linker.cpp
parentfedff9bd020136e92a36cda9efea7d3fa3ff8f74 (diff)
parent85efd3b59108cb682027d3e41869eaae2f5b5a97 (diff)
linker: remove link from external library on unload am: b37d10cc80 am: 3a644889b2 am: cb40eec87c am: 0399816edb
am: 85efd3b591 Change-Id: I0b41cdffdccab8b79a4d9c6327dc0f6f521c1acf
Diffstat (limited to 'linker/linker.cpp')
-rw-r--r--linker/linker.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 8e7a1411c..201e187c3 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -1776,6 +1776,9 @@ static void soinfo_unload(soinfo* soinfos[], size_t count) {
if (local_unload_list.contains(child)) {
continue;
} else if (child->is_linked() && child->get_local_group_root() != root) {
+ child->get_parents().remove_if([&] (const soinfo* parent) {
+ return parent == si;
+ });
external_unload_list.push_back(child);
} else if (child->get_parents().empty()) {
unload_list.push_back(child);