aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-06-08 18:25:49 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-06-08 18:25:49 +0000
commit06f6466e11bf4fe85337e0a734d526cedcdf7241 (patch)
tree524bb87c28f7d9db90b7b506afa310c3a9566272
parent96ba9f9e1a308cb9bb4c67f65b38500b48c4e55e (diff)
parent379003621a1d2c28c18b42236d1d61ce80c1e92a (diff)
downloadbionic-android-6.0.1_r81.tar.gz
Merge cherrypicks of [2379347, 2379239, 2379364, 2379160, 2379220, 2379290, 2379348, 2379328, 2379329, 2379349, 2379350, 2379365, 2379401, 2379351, 2379330, 2379313, 2379382, 2379275, 2379331, 2379352, 2379292, 2379314, 2379315, 2379402, 2379421, 2379369, 2379255, 2379317, 2379404, 2379279, 2379334, 2379372, 2379335] into mnc-mr2-releaseandroid-6.0.1_r81android-6.0.1_r80marshmallow-mr2-release
Change-Id: Icd8bad212b5a28ebb24fe7475eb3c2a214dc3a29
-rw-r--r--linker/linked_list.h6
-rw-r--r--linker/linker.cpp3
2 files changed, 9 insertions, 0 deletions
diff --git a/linker/linked_list.h b/linker/linked_list.h
index 8003dbf84..0572e635b 100644
--- a/linker/linked_list.h
+++ b/linker/linked_list.h
@@ -127,7 +127,13 @@ class LinkedList {
} else {
p->next = next;
}
+
+ if (tail_ == e) {
+ tail_ = p;
+ }
+
Allocator::free(e);
+
e = next;
} else {
p = e;
diff --git a/linker/linker.cpp b/linker/linker.cpp
index d3ac1d000..19f5e94c4 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -1597,6 +1597,9 @@ static void soinfo_unload(soinfo* root) {
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 {
depth_first_list.push_front(child);