From 6cb241f9024c6923715cf4e9eeaf803a7d258750 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Fri, 1 Oct 2010 18:28:28 -0700 Subject: 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 --- include/utils/ZipFileRO.h | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) (limited to 'include/utils/ZipFileRO.h') diff --git a/include/utils/ZipFileRO.h b/include/utils/ZipFileRO.h index 9668bdeef55b..e1ff780ab9e0 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. -- cgit v1.2.3-59-g8ed1b