Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aea0ae5a authored by Kenny Root's avatar Kenny Root Committed by Android (Google) Code Review
Browse files

Merge "Revert "Revert "Free created FileMap when uncompressing files""" into gingerbread

parents 7f3a7afc b47eafac
Loading
Loading
Loading
Loading
+9 −5
Original line number Original line Diff line number Diff line
@@ -643,7 +643,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 bail;
            goto unmap;
    }
    }


    if (compLen > kSequentialMin)
    if (compLen > kSequentialMin)
@@ -651,6 +651,8 @@ bool ZipFileRO::uncompressEntry(ZipEntryRO entry, void* buffer) const


    result = true;
    result = true;


unmap:
    file->release();
bail:
bail:
    return result;
    return result;
}
}
@@ -674,7 +676,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);


    const FileMap* file = createEntryFileMap(entry);
    FileMap* file = createEntryFileMap(entry);
    if (file == NULL) {
    if (file == NULL) {
        goto bail;
        goto bail;
    }
    }
@@ -685,21 +687,23 @@ 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 bail;
            goto unmap;
        } 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 bail;
            goto unmap;
        } 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 bail;
            goto unmap;
    }
    }


    result = true;
    result = true;


unmap:
    file->release();
bail:
bail:
    return result;
    return result;
}
}