Loading libziparchive/zip_archive.cc +16 −1 Original line number Diff line number Diff line Loading @@ -1131,7 +1131,22 @@ int32_t ExtractEntryToFile(ZipArchiveHandle handle, return kIoError; } int result = TEMP_FAILURE_RETRY(ftruncate(fd, declared_length + current_offset)); int result = 0; #if defined(__linux__) // Make sure we have enough space on the volume to extract the compressed // entry. Note that the call to ftruncate below will change the file size but // will not allocate space on disk. if (declared_length > 0) { result = TEMP_FAILURE_RETRY(fallocate(fd, 0, current_offset, declared_length)); if (result == -1) { ALOGW("Zip: unable to allocate space for file to %" PRId64 ": %s", static_cast<int64_t>(declared_length + current_offset), strerror(errno)); return kIoError; } } #endif // defined(__linux__) result = TEMP_FAILURE_RETRY(ftruncate(fd, declared_length + current_offset)); if (result == -1) { ALOGW("Zip: unable to truncate file to %" PRId64 ": %s", static_cast<int64_t>(declared_length + current_offset), strerror(errno)); Loading Loading
libziparchive/zip_archive.cc +16 −1 Original line number Diff line number Diff line Loading @@ -1131,7 +1131,22 @@ int32_t ExtractEntryToFile(ZipArchiveHandle handle, return kIoError; } int result = TEMP_FAILURE_RETRY(ftruncate(fd, declared_length + current_offset)); int result = 0; #if defined(__linux__) // Make sure we have enough space on the volume to extract the compressed // entry. Note that the call to ftruncate below will change the file size but // will not allocate space on disk. if (declared_length > 0) { result = TEMP_FAILURE_RETRY(fallocate(fd, 0, current_offset, declared_length)); if (result == -1) { ALOGW("Zip: unable to allocate space for file to %" PRId64 ": %s", static_cast<int64_t>(declared_length + current_offset), strerror(errno)); return kIoError; } } #endif // defined(__linux__) result = TEMP_FAILURE_RETRY(ftruncate(fd, declared_length + current_offset)); if (result == -1) { ALOGW("Zip: unable to truncate file to %" PRId64 ": %s", static_cast<int64_t>(declared_length + current_offset), strerror(errno)); Loading