Skip to content

Commit 25b7c36

Browse files
zlib: define brotli error constants using macro list
Expose Brotli decoder error constants using BROTLI_DECODER_ERROR_CODES_LIST instead of manually listing each constant. This avoids compilation errors when building against older shared Brotli libraries (such as Brotli <= 1.2.0) where BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH is not yet defined.
1 parent 53f037e commit 25b7c36

2 files changed

Lines changed: 6 additions & 33 deletions

File tree

‎src/node_zlib.cc‎

Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2280,38 +2280,11 @@ void DefineZlibConstants(Local<Object> target) {
22802280
NODE_DEFINE_CONSTANT(target,
22812281
BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION);
22822282
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_PARAM_LARGE_WINDOW);
2283-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_NO_ERROR);
2284-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_SUCCESS);
2285-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_NEEDS_MORE_INPUT);
2286-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_NEEDS_MORE_OUTPUT);
2287-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE);
2288-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_RESERVED);
2289-
NODE_DEFINE_CONSTANT(target,
2290-
BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE);
2291-
NODE_DEFINE_CONSTANT(target,
2292-
BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET);
2293-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME);
2294-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_CL_SPACE);
2295-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE);
2296-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT);
2297-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1);
2298-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2);
2299-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_TRANSFORM);
2300-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_DICTIONARY);
2301-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS);
2302-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_PADDING_1);
2303-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_PADDING_2);
2304-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_DISTANCE);
2305-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH);
2306-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET);
2307-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_INVALID_ARGUMENTS);
2308-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES);
2309-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS);
2310-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP);
2311-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1);
2312-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2);
2313-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES);
2314-
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER_ERROR_UNREACHABLE);
2283+
2284+
#define V(PREFIX, NAME, CODE) \
2285+
NODE_DEFINE_CONSTANT(target, BROTLI_DECODER ## PREFIX ## NAME);
2286+
BROTLI_DECODER_ERROR_CODES_LIST(V, /* nothing */)
2287+
#undef V
23152288

23162289
// Zstd constants
23172290
NODE_DEFINE_CONSTANT(target, ZSTD_e_continue);

‎test/parallel/test-zlib-invalid-input.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ Object.defineProperty(spoofedLength, 'byteLength', { get: () => 5000 });
8989
deflate.close();
9090
}
9191

92-
{
92+
if (zlib.constants.BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH !== undefined) {
9393
// A block switch is invalid when the stream declares only one block type.
9494
const invalidBlockSwitch = Buffer.from(
9595
'200010414141fcffff07002228f00b60f7f41f000000',

0 commit comments

Comments
 (0)