diff --git a/src/backends/packrat.c b/src/backends/packrat.c index 9977cc3cba5c226ff48de8e753a31ada08dda34b..b77197378783f6a7468fd27c041608cb358960e7 100644 --- a/src/backends/packrat.c +++ b/src/backends/packrat.c @@ -186,6 +186,7 @@ HParseResult* h_do_parse(const HParser* parser, HParseState *state) { if (!m) { // It doesn't exist, so create a dummy result to cache HLeftRec *base = a_new(HLeftRec, 1); + // But only cache it now if there's some chance it could grow; primitive parsers can't if (parser->vtable->higher) { base->seed = NULL; base->rule = parser; base->head = NULL; h_slist_push(state->lr_stack, base);