summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkrangelov <kr.angelov@gmail.com>2019-02-14 15:32:12 +0100
committerkrangelov <kr.angelov@gmail.com>2019-02-14 15:32:12 +0100
commit8a5e7fa25d0ab0de9d90f441f0c7dcb7f0d7b331 (patch)
tree2636b214ad01c451881e843a48a2d2414357b7c8
parente05c79a751d207c1ca3dd6f467f2d9f72d013201 (diff)
fix the reader for patterns in a def rule
-rw-r--r--src/runtime/c/pgf/reader.c20
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);