From dc2d840ff76b406131cf0ba8f133778eeabffeab Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Tue, 7 Sep 2010 19:30:22 -0700 Subject: [PATCH] Revert "Free created FileMap when uncompressing files" This reverts commit 52b8235238fb4d8cf141020cc1ae33880929dc3f. munmap() on a region that overlaps something else (e.g, the ZIP Central Directory in this case) unmaps those other regions as well making the ZipFileRO class unhappy. Revert this for now until we can have FileMap deal with this craziness. --- libs/utils/ZipFileRO.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/libs/utils/ZipFileRO.cpp b/libs/utils/ZipFileRO.cpp index a0e01c693..2d53136c1 100644 --- a/libs/utils/ZipFileRO.cpp +++ b/libs/utils/ZipFileRO.cpp @@ -636,7 +636,7 @@ bool ZipFileRO::uncompressEntry(ZipEntryRO entry, void* buffer) const memcpy(buffer, ptr, uncompLen); } else { if (!inflateBuffer(buffer, ptr, uncompLen, compLen)) - goto unmap; + goto bail; } if (compLen > kSequentialMin) @@ -644,8 +644,6 @@ bool ZipFileRO::uncompressEntry(ZipEntryRO entry, void* buffer) const result = true; -unmap: - file->release(); bail: return result; } @@ -669,7 +667,7 @@ bool ZipFileRO::uncompressEntry(ZipEntryRO entry, int fd) const getEntryInfo(entry, &method, &uncompLen, &compLen, &offset, NULL, NULL); - FileMap* file = createEntryFileMap(entry); + const FileMap* file = createEntryFileMap(entry); if (file == NULL) { goto bail; } @@ -680,23 +678,21 @@ bool ZipFileRO::uncompressEntry(ZipEntryRO entry, int fd) const ssize_t actual = write(fd, ptr, uncompLen); if (actual < 0) { LOGE("Write failed: %s\n", strerror(errno)); - goto unmap; + goto bail; } else if ((size_t) actual != uncompLen) { LOGE("Partial write during uncompress (%zd of %zd)\n", (size_t)actual, (size_t)uncompLen); - goto unmap; + goto bail; } else { LOGI("+++ successful write\n"); } } else { if (!inflateBuffer(fd, ptr, uncompLen, compLen)) - goto unmap; + goto bail; } result = true; -unmap: - file->release(); bail: return result; }