diff options
author | Adam Lesinski <adamlesinski@google.com> | 2016-10-03 20:21:46 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-10-03 20:21:46 +0000 |
commit | 73b91c63adcc185fb4e70b9c9025331891d927a9 (patch) | |
tree | 56c0019a230b2e12f5fea98b1537a251d3b1024f /libs/androidfw/AssetManager.cpp | |
parent | 164c750f8d242353eecb3de520fec81664b9a8d2 (diff) | |
parent | f48d0b8f19f09e9bee74f62a48e39b1001697359 (diff) |
Merge "[AssetManager]:Fix thread race caused double free issue." am: 126e022095
am: f48d0b8f19
Change-Id: Ia7da9ff37d813729a8c916a3b6e378110045aa17
Diffstat (limited to 'libs/androidfw/AssetManager.cpp')
-rw-r--r-- | libs/androidfw/AssetManager.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libs/androidfw/AssetManager.cpp b/libs/androidfw/AssetManager.cpp index f50cff4387d2..8ea25d60cc89 100644 --- a/libs/androidfw/AssetManager.cpp +++ b/libs/androidfw/AssetManager.cpp @@ -1892,6 +1892,7 @@ ZipFileRO* AssetManager::SharedZip::getZip() Asset* AssetManager::SharedZip::getResourceTableAsset() { + AutoMutex _l(gLock); ALOGV("Getting from SharedZip %p resource asset %p\n", this, mResourceTableAsset); return mResourceTableAsset; } @@ -1901,10 +1902,10 @@ Asset* AssetManager::SharedZip::setResourceTableAsset(Asset* asset) { AutoMutex _l(gLock); if (mResourceTableAsset == NULL) { - mResourceTableAsset = asset; // This is not thread safe the first time it is called, so // do it here with the global lock held. asset->getBuffer(true); + mResourceTableAsset = asset; return asset; } } |