1
0
mirror of https://github.com/janet-lang/janet synced 2024-12-30 18:30:26 +00:00

Fix peg bug when there is no default grammar set.

This could result in a segfault when we attempt to
read from a NULL pointer.
This commit is contained in:
Calvin Rose 2021-05-20 21:57:22 -05:00
parent 81186bf262
commit 2db7945d6f

View File

@ -1148,7 +1148,9 @@ static uint32_t peg_compile1(Builder *b, Janet peg) {
for (; i > 0 && janet_checktype(peg, JANET_KEYWORD); --i) { for (; i > 0 && janet_checktype(peg, JANET_KEYWORD); --i) {
Janet nextPeg = janet_table_get_ex(grammar, peg, &grammar); Janet nextPeg = janet_table_get_ex(grammar, peg, &grammar);
if (!grammar || janet_checktype(nextPeg, JANET_NIL)) { if (!grammar || janet_checktype(nextPeg, JANET_NIL)) {
nextPeg = janet_table_get(b->default_grammar, peg); nextPeg = (b->default_grammar == NULL)
? janet_wrap_nil()
: janet_table_get(b->default_grammar, peg);
if (janet_checktype(nextPeg, JANET_NIL)) { if (janet_checktype(nextPeg, JANET_NIL)) {
peg_panic(b, "unknown rule"); peg_panic(b, "unknown rule");
} }