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);