diff options
| author | krangelov <kr.angelov@gmail.com> | 2019-02-14 15:32:12 +0100 |
|---|---|---|
| committer | krangelov <kr.angelov@gmail.com> | 2019-02-14 15:32:12 +0100 |
| commit | 8a5e7fa25d0ab0de9d90f441f0c7dcb7f0d7b331 (patch) | |
| tree | 2636b214ad01c451881e843a48a2d2414357b7c8 /src | |
| parent | e05c79a751d207c1ca3dd6f467f2d9f72d013201 (diff) | |
fix the reader for patterns in a def rule
Diffstat (limited to 'src')
| -rw-r--r-- | src/runtime/c/pgf/reader.c | 20 |
1 files changed, 12 insertions, 8 deletions
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); |
