You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I tried to compress a Windows 7 VMware vmdk file with 25 GByte which worked with the standard LZMA as expected. But then I tried bzip2 and gzip mode and both failed with the above error.
I took a short look at the source and found following solution for me, with this I could go further and have now a malloc problem which I will try to solve later.
--- lrzip-0.551/stream.c 2010-12-12 07:49:00.000000000 +0100
+++ lrzip-0.551/stream.c.new 2010-12-14 15:23:51.192320814 +0100
@@ -213,6 +213,7 @@
{
u32 dlen = cthread->s_len;
uchar *c_buf;
+ int bzip2_ret;
if (!lzo_compresses(cthread->s_buf, cthread->s_len))
return 0;
@@ -223,9 +224,21 @@
return -1;
}
- if (BZ2_bzBuffToBuffCompress((char *)c_buf, &dlen,
+ bzip2_ret = BZ2_bzBuffToBuffCompress((char *)c_buf, &dlen,
(char *)cthread->s_buf, cthread->s_len,
- control.compression_level, 0, control.compression_level * 10) != BZ_OK) {
+ control.compression_level, 0, control.compression_level * 10);
+
+ /* if compressed data is bigger then original data leave
+ as CTYPE_NONE */
+
+ if (bzip2_ret == BZ_OUTBUFF_FULL) {
+ print_maxverbose("Incompressible block\n");
+ /* Incompressible, leave as CTYPE_NONE */
+ free(c_buf);
+ return 0;
+ }
+
+ if (bzip2_ret != BZ_OK) {
free(c_buf);
print_maxverbose("BZ2 compress failed\n");
return -1;
@@ -249,6 +262,7 @@
{
unsigned long dlen = cthread->s_len;
uchar *c_buf;
+ int gzip_ret;
c_buf = malloc(dlen);
if (!c_buf) {
@@ -256,8 +270,20 @@
return -1;
}
- if (compress2(c_buf, &dlen, cthread->s_buf, cthread->s_len,
- control.compression_level) != Z_OK) {
+ gzip_ret = compress2(c_buf, &dlen, cthread->s_buf, cthread->s_len,
+ control.compression_level);
+
+ /* if compressed data is bigger then original data leave
+ as CTYPE_NONE */
+
+ if (gzip_ret == Z_BUF_ERROR) {
+ print_maxverbose("Incompressible block\n");
+ /* Incompressible, leave as CTYPE_NONE */
+ free(c_buf);
+ return 0;
+ }
+
+ if (gzip_ret != Z_OK) {
free(c_buf);
print_maxverbose("compress2 failed\n");
return -1;
The text was updated successfully, but these errors were encountered:
I tried to compress a Windows 7 VMware vmdk file with 25 GByte which worked with the standard LZMA as expected. But then I tried bzip2 and gzip mode and both failed with the above error.
I took a short look at the source and found following solution for me, with this I could go further and have now a malloc problem which I will try to solve later.
The text was updated successfully, but these errors were encountered: