diff options
author | Kenny Root <kroot@google.com> | 2010-10-01 18:28:28 -0700 |
---|---|---|
committer | Kenny Root <kroot@google.com> | 2010-10-01 18:30:59 -0700 |
commit | dbf6f272a2cad97f7ce7fa600ffd2220483c80d1 (patch) | |
tree | ae9d3d9b481447694e60818de052cfde52d689a4 /include | |
parent | db193288b23381f8ee9938e53015e31395bc2cd4 (diff) | |
download | frameworks_native-dbf6f272a2cad97f7ce7fa600ffd2220483c80d1.zip frameworks_native-dbf6f272a2cad97f7ce7fa600ffd2220483c80d1.tar.gz frameworks_native-dbf6f272a2cad97f7ce7fa600ffd2220483c80d1.tar.bz2 |
ZipFileRO: moar logging and wrap close
There is apparently still a race upon reading the entry Local File
Header that can't be tracked down, so move the LFH check inside the
mutex-protected block so we can call lseek again to see where we are
when we log an error.
Also, close() can fail so use TEMP_FAILURE_RETRY on it so we don't
unwittingly leak file descriptors when Mean Mr. EINTR comes a-knocking.
Change-Id: I753abad0bd882fe28f7281c406fa76f64393ef4c
Diffstat (limited to 'include')
-rw-r--r-- | include/utils/ZipFileRO.h | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/include/utils/ZipFileRO.h b/include/utils/ZipFileRO.h index 9668bde..e1ff780 100644 --- a/include/utils/ZipFileRO.h +++ b/include/utils/ZipFileRO.h @@ -64,15 +64,8 @@ public: mNumEntries(-1), mDirectoryOffset(-1), mHashTableSize(-1), mHashTable(NULL) {} - ~ZipFileRO() { - free(mHashTable); - if (mDirectoryMap) - mDirectoryMap->release(); - if (mFd >= 0) - close(mFd); - if (mFileName) - free(mFileName); - } + + ~ZipFileRO(); /* * Open an archive. |