import: don't invoke compress callbacks with empty data
It's pointless if no data was generated. (This happens if an empty file is compressed)
This commit is contained in:
@@ -125,9 +125,11 @@ int import_uncompress(ImportCompress *c, const void *data, size_t size, ImportCo
|
||||
if (!IN_SET(lzr, LZMA_OK, LZMA_STREAM_END))
|
||||
return -EIO;
|
||||
|
||||
r = callback(buffer, sizeof(buffer) - c->xz.avail_out, userdata);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (c->xz.avail_out < sizeof(buffer)) {
|
||||
r = callback(buffer, sizeof(buffer) - c->xz.avail_out, userdata);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -146,9 +148,11 @@ int import_uncompress(ImportCompress *c, const void *data, size_t size, ImportCo
|
||||
if (!IN_SET(r, Z_OK, Z_STREAM_END))
|
||||
return -EIO;
|
||||
|
||||
r = callback(buffer, sizeof(buffer) - c->gzip.avail_out, userdata);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (c->gzip.avail_out < sizeof(buffer)) {
|
||||
r = callback(buffer, sizeof(buffer) - c->gzip.avail_out, userdata);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -168,9 +172,11 @@ int import_uncompress(ImportCompress *c, const void *data, size_t size, ImportCo
|
||||
if (!IN_SET(r, BZ_OK, BZ_STREAM_END))
|
||||
return -EIO;
|
||||
|
||||
r = callback(buffer, sizeof(buffer) - c->bzip2.avail_out, userdata);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (c->bzip2.avail_out < sizeof(buffer)) {
|
||||
r = callback(buffer, sizeof(buffer) - c->bzip2.avail_out, userdata);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user