summaryrefslogtreecommitdiff
path: root/libs/androidfw/AssetManager.cpp
diff options
context:
space:
mode:
authorAdam Lesinski <adamlesinski@google.com>2016-10-03 20:31:15 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-10-03 20:31:15 +0000
commitdbfd183fdc16660a66339edaa4c360c9f5615690 (patch)
tree5d97c4eddfdfe019f020c05fd567760ed84887cc /libs/androidfw/AssetManager.cpp
parent8db93d86b233196645c9e0477a6493e17904e7c6 (diff)
parent224ffd3cb2b4f1cf031877d7ecba50562b3b9571 (diff)
Merge "[AssetManager]:Fix thread race caused double free issue." am: 126e022095 am: f48d0b8f19 am: 73b91c63ad
am: 224ffd3cb2 Change-Id: Id06724e9d44464d1599743741d73b5bd9c282ff2
Diffstat (limited to 'libs/androidfw/AssetManager.cpp')
-rw-r--r--libs/androidfw/AssetManager.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/libs/androidfw/AssetManager.cpp b/libs/androidfw/AssetManager.cpp
index 171532bfa98e..4a42e2b542c8 100644
--- a/libs/androidfw/AssetManager.cpp
+++ b/libs/androidfw/AssetManager.cpp
@@ -1837,6 +1837,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;
}
@@ -1846,10 +1847,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;
}
}