nodejs/node · error
error parsing lgwin value [%s]\n
Error message
error parsing lgwin value [%s]\n
What it means
`ParseInt` (brotli.c:228) parses `-w`'s argument with bounds `[0, BROTLI_MAX_WINDOW_BITS]`. It rejects non-digits, leading zeros, >5 digits, and out-of-range values. A failure prints `error parsing lgwin value [<arg>]` and returns COMMAND_INVALID.
Source
Thrown at deps/brotli/c/tools/brotli.c:472
if (quality_set) {
fprintf(stderr, "quality already set\n");
return COMMAND_INVALID;
}
quality_set = ParseInt(argv[i], BROTLI_MIN_QUALITY,
BROTLI_MAX_QUALITY, ¶ms->quality);
if (!quality_set) {
fprintf(stderr, "error parsing quality value [%s]\n", argv[i]);
return COMMAND_INVALID;
}
} else if (c == 'w') {
if (lgwin_set) {
fprintf(stderr, "lgwin parameter already set\n");
return COMMAND_INVALID;
}
lgwin_set = ParseInt(argv[i], 0,
BROTLI_MAX_WINDOW_BITS, ¶ms->lgwin);
if (!lgwin_set) {
fprintf(stderr, "error parsing lgwin value [%s]\n", argv[i]);
return COMMAND_INVALID;
}
if (params->lgwin != 0 && params->lgwin < BROTLI_MIN_WINDOW_BITS) {
fprintf(stderr,
"lgwin parameter (%d) smaller than the minimum (%d)\n",
params->lgwin, BROTLI_MIN_WINDOW_BITS);
return COMMAND_INVALID;
}
} else if (c == 'C') {
if (comment_set) {
fprintf(stderr, "comment already set\n");
return COMMAND_INVALID;
}
params->comment_len = MAX_COMMENT_LEN;
if (!ParseBase64(argv[i], params->comment, ¶ms->comment_len)) {
fprintf(stderr, "invalid base64-encoded comment\n");
return COMMAND_INVALID;
}View on GitHub (pinned to 1b2de5e052)
Solutions
- Pass an integer in [0, BROTLI_MAX_WINDOW_BITS] with no leading zeros (e.g. `-w 22`).
- Use `0` for the auto/default window; pick a value in [BROTLI_MIN_WINDOW_BITS, BROTLI_MAX_WINDOW_BITS] otherwise.
- Validate the variable: `[[ "$W" =~ ^[0-9]{1,5}$ ]] || exit 1`.
Example fix
# before brotli -w 030 in # after brotli -w 22 in
Defensive patterns
Strategy: validation
Validate before calling
# bash: validate -w value (0..BROTLI_MAX_WINDOW_BITS, no leading zero)
MAXW=24 # BROTLI_MAX_WINDOW_BITS; some builds allow larger with --large-window
argv=("$@")
for ((i=0;i<${#argv[@]};i++)); do
if [ "${argv[$i]}" = -w ]; then
v=${argv[$((i+1))]:-}
if ! [[ "$v" =~ ^(0|[1-9][0-9]{0,4})$ ]] || [ "$v" -gt "$MAXW" ]; then
echo "invalid lgwin '$v'" >&2; exit 2
fi
fi
done
brotli "$@" Try / catch
# bash if ! brotli "$@"; then rc=$?; echo "brotli exit $rc; verify -w value" >&2; exit "$rc"; fi
Prevention
- Use integers with no leading zeros; `0` means default window.
- Validate the source variable with a regex before invoking.
When it happens
Trigger: `brotli -w abc in` (non-digit), `brotli -w 030 in` (leading zero), `brotli -w 999999 in` (>5 digits), `brotli -w 999 in` (above BROTLI_MAX_WINDOW_BITS).
Common situations: Passing a float (`-w 22.5`); negative values from misconfigured env; confusing lgwin with quality magnitude.
Related errors
- error parsing quality value [%s]\n
- lgwin parameter already set\n
- lgwin parameter (%d) smaller than the minimum (%d)\n
- too many options passed
- quality already set
AI-assisted analysis of nodejs/node@1b2de5e052 (2026-08-13).
Data as JSON: /api/errors/d139307f35106705.
Report an issue: GitHub.