From 8a5e7fa25d0ab0de9d90f441f0c7dcb7f0d7b331 Mon Sep 17 00:00:00 2001 From: krangelov Date: Thu, 14 Feb 2019 15:32:12 +0100 Subject: fix the reader for patterns in a def rule --- src/runtime/c/pgf/reader.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'src/runtime/c/pgf') diff --git a/src/runtime/c/pgf/reader.c b/src/runtime/c/pgf/reader.c index d7094c9d5..82b6f8abf 100644 --- a/src/runtime/c/pgf/reader.c +++ b/src/runtime/c/pgf/reader.c @@ -328,16 +328,20 @@ pgf_read_patt(PgfReader* rdr) uint8_t tag = pgf_read_tag(rdr); switch (tag) { case PGF_PATT_APP: { - PgfPattApp *papp = - gu_new_variant(PGF_PATT_APP, - PgfPattApp, - &patt, rdr->opool); - papp->ctor = pgf_read_cid(rdr, rdr->opool); + PgfCId ctor = pgf_read_cid(rdr, rdr->opool); gu_return_on_exn(rdr->err, gu_null_variant); - - papp->n_args = pgf_read_len(rdr); + + size_t n_args = pgf_read_len(rdr); gu_return_on_exn(rdr->err, gu_null_variant); - + + PgfPattApp *papp = + gu_new_flex_variant(PGF_PATT_APP, + PgfPattApp, + args, n_args, + &patt, rdr->opool); + papp->ctor = ctor; + papp->n_args = n_args; + for (size_t i = 0; i < papp->n_args; i++) { papp->args[i] = pgf_read_patt(rdr); gu_return_on_exn(rdr->err, gu_null_variant); -- cgit v1.2.3