std.parseJson only catches nlohmann::json::parse_error. Overflowing numbers raise out_of_range.406, which escapes to CATCH in libjsonnet.cpp and abort()s. Same for std.parseYaml("1E999") (RapidYAML → json::parse without catching out_of_range).
Same gap as #680 / #951 (parse_error only). Tip 2ef32ab / CLI v0.22.0.
Repro
git clone https://github.com/google/jsonnet.git
cd jsonnet && make -j$(nproc)
./jsonnet -e 'std.parseJson("1E999")'
… out_of_range.406 … number overflow parsing '1E999'
Aborted (core dumped) # exit 134
./jsonnet -e 'std.parseYaml("1E999")' → same abort.
./jsonnet -e 'std.parseJson("{")' → RuntimeError, no abort.
./jsonnet -e 'std.parseJson("1e2")' → 100.
Fix
Catch json::exception (or out_of_range) in builtinParseJson and around json::parse in builtinParseYaml; throw makeError(...) like #951.
std.parseJsononly catchesnlohmann::json::parse_error. Overflowing numbers raiseout_of_range.406, which escapes toCATCHinlibjsonnet.cppandabort()s. Same forstd.parseYaml("1E999")(RapidYAML →json::parsewithout catchingout_of_range).Same gap as #680 / #951 (
parse_erroronly). Tip2ef32ab/ CLI v0.22.0.Repro
./jsonnet -e 'std.parseYaml("1E999")'→ same abort../jsonnet -e 'std.parseJson("{")'→ RuntimeError, no abort../jsonnet -e 'std.parseJson("1e2")'→100.Fix
Catch
json::exception(orout_of_range) inbuiltinParseJsonand aroundjson::parseinbuiltinParseYaml;throw makeError(...)like #951.