Zlib throws an exception when trying to decompress a previously compressed empty buffer. The code below does not enter any catch block in node 8.x.x, but enters all of them in node 9.1.0. It seems like the compression part behaves exactly the same in 8.x.x and 9.1.0, but the decompression part definitely not.
'use strict';
const assert = require('assert');
const zlib = require('zlib');
const emptyBuffer = new Buffer(0);
let compressed, decompressed
//deflateRawSync
compressed = zlib.deflateRawSync(emptyBuffer);
console.log(compressed);
try {
decompressed = zlib.inflateRawSync(compressed);
assert(decompressed.compare(emptyBuffer) === 0);
} catch (e) { console.log('deflateRawSync', e);}
//deflateSync
compressed = zlib.deflateSync(emptyBuffer);
console.log(compressed);
try {
decompressed = zlib.inflateSync(compressed);
assert(decompressed.compare(emptyBuffer) === 0);
} catch (e) { console.log('deflateSync', e);}
//gzipSync
compressed = zlib.gzipSync(emptyBuffer);
console.log(compressed);
try {
decompressed = zlib.gunzipSync(compressed);
assert(decompressed.compare(emptyBuffer) === 0);
} catch (e) { console.log('gzipSync', e);}
(edited by @addaleax: syntax highlighting)
Zlib throws an exception when trying to decompress a previously compressed empty buffer. The code below does not enter any
catchblock in node 8.x.x, but enters all of them in node 9.1.0. It seems like the compression part behaves exactly the same in 8.x.x and 9.1.0, but the decompression part definitely not.(edited by @addaleax: syntax highlighting)