99c
99c copied to clipboard
zopfli: fails on non-empty input file
@opennota
jnml@r550:~/src/github.com/google/zopfli$ ls
CONTRIBUTING.md CONTRIBUTORS COPYING Makefile README README.zopflipng src
jnml@r550:~/src/github.com/google/zopfli$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
jnml@r550:~/src/github.com/google/zopfli$ touch tmp
jnml@r550:~/src/github.com/google/zopfli$ 99c src/zopfli/*.c -O2 -W -Wall -Wextra -Wno-unused-function -ansi -pedantic -lm -o zopfli && ./zopfli -v tmp
Saving to: tmp.gz
Error: Out of memory. Tried allocating 0 bytes of memory.
jnml@r550:~/src/github.com/google/zopfli$ 99trace ./zopfli -v tmp |& tee trace
jnml@r550:~/src/github.com/google/zopfli$
This looks like a bug in ccir
or virtual
. I'll try to invstigate later. Feel free to try to find the bug(s) by yourself if you like. The attached trace might be useful in identifying the source of the problem.
@opennota
The C code assumes malloc(0) cannot return NULL, but it can. Anyway, virtual
is now truning malloc(0) into malloc(1). We have progrress:
jnml@4670:~/src/github.com/google/zopfli$ ls
CONTRIBUTING.md CONTRIBUTORS COPYING Makefile README README.zopflipng src
jnml@4670:~/src/github.com/google/zopfli$ touch tmp
jnml@4670:~/src/github.com/google/zopfli$ gcc src/zopfli/*.c -O2 -W -Wall -Wextra -Wno-unused-function -ansi -pedantic -lm -o zopfli && ./zopfli -v tmp && hd tmp.gz
Saving to: tmp.gz
Iteration 0: 91 bit
Original Size: 0, Deflate: 2, Compression: inf% Removed
Original Size: 0, Gzip: 20, Compression: inf% Removed
00000000 1f 8b 08 00 00 00 00 00 02 03 03 00 00 00 00 00 |................|
00000010 00 00 00 00 |....|
00000014
jnml@4670:~/src/github.com/google/zopfli$ rm -v tmp.gz
removed 'tmp.gz'
jnml@4670:~/src/github.com/google/zopfli$ 99c src/zopfli/*.c -O2 -W -Wall -Wextra -Wno-unused-function -ansi -pedantic -lm -o zopfli && ./zopfli -v tmp && hd tmp.gz
Saving to: tmp.gz
Iteration 0: 91 bit
Original Size: 0, Deflate: 2, Compression: -Inf% Removed
Original Size: 0, Gzip: 20, Compression: -Inf% Removed
00000000 1f 8b 08 00 00 00 00 00 02 03 03 00 00 00 00 00 |................|
00000010 00 00 00 00 |....|
00000014
jnml@4670:~/src/github.com/google/zopfli$
The program still fails on non-empty input, but that's a different bug.
1-byte file passes:
jnml@4670:~/src/github.com/google/zopfli$ echo -n a > tmp && hd tmp
00000000 61 |a|
00000001
jnml@4670:~/src/github.com/google/zopfli$ gcc src/zopfli/*.c -O2 -W -Wall -Wextra -Wno-unused-function -ansi -pedantic -lm -o zopfli && ./zopfli -v tmp && hd tmp.gz
Saving to: tmp.gz
Iteration 0: 101 bit
compressed block size: 2 (0k) (unc: 1)
Original Size: 1, Deflate: 3, Compression: 1844674407370955161600.000000% Removed
Original Size: 1, Gzip: 21, Compression: 1844674407370955161600.000000% Removed
00000000 1f 8b 08 00 00 00 00 00 02 03 4b 04 00 43 be b7 |..........K..C..|
00000010 e8 01 00 00 00 |.....|
00000015
jnml@4670:~/src/github.com/google/zopfli$ rm -v tmp.gz
removed 'tmp.gz'
jnml@4670:~/src/github.com/google/zopfli$ 99c src/zopfli/*.c -O2 -W -Wall -Wextra -Wno-unused-function -ansi -pedantic -lm -o zopfli && ./zopfli -v tmp && hd tmp.gz
Saving to: tmp.gz
Iteration 0: 101 bit
compressed block size: 2 (0k) (unc: 1)
Original Size: 1, Deflate: 3, Compression: -200.000000% Removed
Original Size: 1, Gzip: 21, Compression: -2000.000000% Removed
00000000 1f 8b 08 00 00 00 00 00 02 03 4b 04 00 43 be b7 |..........K..C..|
00000010 e8 01 00 00 00 |.....|
00000015
jnml@4670:~/src/github.com/google/zopfli$