Revert "Free created FileMap when uncompressing files"

This reverts commit 52b8235238.

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.
This commit is contained in:
Kenny Root
2010-09-07 19:30:22 -07:00
parent 883bbb7228
commit a19ef306bd

View File

@@ -636,7 +636,7 @@ bool ZipFileRO::uncompressEntry(ZipEntryRO entry, void* buffer) const
memcpy(buffer, ptr, uncompLen); memcpy(buffer, ptr, uncompLen);
} else { } else {
if (!inflateBuffer(buffer, ptr, uncompLen, compLen)) if (!inflateBuffer(buffer, ptr, uncompLen, compLen))
goto unmap; goto bail;
} }
if (compLen > kSequentialMin) if (compLen > kSequentialMin)
@@ -644,8 +644,6 @@ bool ZipFileRO::uncompressEntry(ZipEntryRO entry, void* buffer) const
result = true; result = true;
unmap:
file->release();
bail: bail:
return result; return result;
} }
@@ -669,7 +667,7 @@ bool ZipFileRO::uncompressEntry(ZipEntryRO entry, int fd) const
getEntryInfo(entry, &method, &uncompLen, &compLen, &offset, NULL, NULL); getEntryInfo(entry, &method, &uncompLen, &compLen, &offset, NULL, NULL);
FileMap* file = createEntryFileMap(entry); const FileMap* file = createEntryFileMap(entry);
if (file == NULL) { if (file == NULL) {
goto bail; goto bail;
} }
@@ -680,23 +678,21 @@ bool ZipFileRO::uncompressEntry(ZipEntryRO entry, int fd) const
ssize_t actual = write(fd, ptr, uncompLen); ssize_t actual = write(fd, ptr, uncompLen);
if (actual < 0) { if (actual < 0) {
LOGE("Write failed: %s\n", strerror(errno)); LOGE("Write failed: %s\n", strerror(errno));
goto unmap; goto bail;
} else if ((size_t) actual != uncompLen) { } else if ((size_t) actual != uncompLen) {
LOGE("Partial write during uncompress (%zd of %zd)\n", LOGE("Partial write during uncompress (%zd of %zd)\n",
(size_t)actual, (size_t)uncompLen); (size_t)actual, (size_t)uncompLen);
goto unmap; goto bail;
} else { } else {
LOGI("+++ successful write\n"); LOGI("+++ successful write\n");
} }
} else { } else {
if (!inflateBuffer(fd, ptr, uncompLen, compLen)) if (!inflateBuffer(fd, ptr, uncompLen, compLen))
goto unmap; goto bail;
} }
result = true; result = true;
unmap:
file->release();
bail: bail:
return result; return result;
} }