am ac754073: am b58b2714: Merge "ZipFileRO: moar logging and wrap close" into gingerbread

Merge commit 'ac7540733cafcca5bdb1842e1ebcb396ba064583'

* commit 'ac7540733cafcca5bdb1842e1ebcb396ba064583':
  ZipFileRO: moar logging and wrap close
This commit is contained in:
Kenny Root 2010-10-04 07:54:06 -07:00 committed by Android Git Automerger
commit 3d20bc9ff6
2 changed files with 21 additions and 16 deletions

View File

@ -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.

View File

@ -86,6 +86,16 @@ using namespace android;
*/
#define kZipEntryAdj 10000
ZipFileRO::~ZipFileRO() {
free(mHashTable);
if (mDirectoryMap)
mDirectoryMap->release();
if (mFd >= 0)
TEMP_FAILURE_RETRY(close(mFd));
if (mFileName)
free(mFileName);
}
/*
* Convert a ZipEntryRO to a hash table index, verifying that it's in a
* valid range.
@ -122,7 +132,7 @@ status_t ZipFileRO::open(const char* zipFileName)
mFileLength = lseek(fd, 0, SEEK_END);
if (mFileLength < kEOCDLen) {
close(fd);
TEMP_FAILURE_RETRY(close(fd));
return UNKNOWN_ERROR;
}
@ -152,7 +162,7 @@ status_t ZipFileRO::open(const char* zipFileName)
bail:
free(mFileName);
mFileName = NULL;
close(fd);
TEMP_FAILURE_RETRY(close(fd));
return UNKNOWN_ERROR;
}
@ -512,12 +522,14 @@ bool ZipFileRO::getEntryInfo(ZipEntryRO entry, int* pMethod, size_t* pUncompLen,
LOGW("failed reading lfh from offset %ld\n", localHdrOffset);
return false;
}
}
if (get4LE(lfhBuf) != kLFHSignature) {
LOGW("didn't find signature at start of lfh, offset=%ld (got 0x%08lx, expected 0x%08x)\n",
localHdrOffset, get4LE(lfhBuf), kLFHSignature);
return false;
if (get4LE(lfhBuf) != kLFHSignature) {
off_t actualOffset = lseek(mFd, 0, SEEK_CUR);
LOGW("didn't find signature at start of lfh; wanted: offset=%ld data=0x%08x; "
"got: offset=%zd data=0x%08lx\n",
localHdrOffset, kLFHSignature, (size_t)actualOffset, get4LE(lfhBuf));
return false;
}
}
off_t dataOffset = localHdrOffset + kLFHLen