From 79dc2594a3c636d1d93f138697edf75aaab9179b Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Wed, 12 Aug 2026 11:47:52 +0200 Subject: [PATCH] fix the loop detection --- src/runtime/c/pgf/parser.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/runtime/c/pgf/parser.cxx b/src/runtime/c/pgf/parser.cxx index f333b3f3e..3a18d5c50 100644 --- a/src/runtime/c/pgf/parser.cxx +++ b/src/runtime/c/pgf/parser.cxx @@ -164,7 +164,7 @@ void PgfAbstractParser::symbol(Item *item, State *state, PgfSymbol sym) // the following prevents infinite loops with epsilons bool found = false; CCat *prev_ccat = ccat; - while (prev_ccat != NULL && prev_ccat->epsilon == 0 && prev_ccat->cont->state == state) { + while (prev_ccat != NULL && prev_ccat->cont != NULL && prev_ccat->cont->state == state) { if (prev_ccat->value == value_i && prev_ccat->lin_idx == lin_idx_i) { found = true; break; @@ -1390,6 +1390,7 @@ void PgfParser::suspend(Cont *cont,Item *item,bool do_predict,size_t n_suspended arg_ccat = new CCat; arg_ccat->fid = arg->fid; arg_ccat->epsilon = arg; + arg_ccat->cont = NULL; arg_ccat->state = NULL; arg_ccat->lin_idx = arg->lin_idx; arg_ccat->value = arg->value;