summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorKenny Root <kroot@google.com>2010-10-01 18:28:28 -0700
committerKenny Root <kroot@google.com>2010-10-01 18:30:59 -0700
commitdbf6f272a2cad97f7ce7fa600ffd2220483c80d1 (patch)
treeae9d3d9b481447694e60818de052cfde52d689a4 /include
parentdb193288b23381f8ee9938e53015e31395bc2cd4 (diff)
downloadframeworks_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.h11
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.