forked from GitHub/gf-core
fix the reader for patterns in a def rule
This commit is contained in:
@@ -328,16 +328,20 @@ pgf_read_patt(PgfReader* rdr)
|
|||||||
uint8_t tag = pgf_read_tag(rdr);
|
uint8_t tag = pgf_read_tag(rdr);
|
||||||
switch (tag) {
|
switch (tag) {
|
||||||
case PGF_PATT_APP: {
|
case PGF_PATT_APP: {
|
||||||
|
PgfCId ctor = pgf_read_cid(rdr, rdr->opool);
|
||||||
|
gu_return_on_exn(rdr->err, gu_null_variant);
|
||||||
|
|
||||||
|
size_t n_args = pgf_read_len(rdr);
|
||||||
|
gu_return_on_exn(rdr->err, gu_null_variant);
|
||||||
|
|
||||||
PgfPattApp *papp =
|
PgfPattApp *papp =
|
||||||
gu_new_variant(PGF_PATT_APP,
|
gu_new_flex_variant(PGF_PATT_APP,
|
||||||
PgfPattApp,
|
PgfPattApp,
|
||||||
&patt, rdr->opool);
|
args, n_args,
|
||||||
papp->ctor = pgf_read_cid(rdr, rdr->opool);
|
&patt, rdr->opool);
|
||||||
gu_return_on_exn(rdr->err, gu_null_variant);
|
papp->ctor = ctor;
|
||||||
|
papp->n_args = n_args;
|
||||||
papp->n_args = pgf_read_len(rdr);
|
|
||||||
gu_return_on_exn(rdr->err, gu_null_variant);
|
|
||||||
|
|
||||||
for (size_t i = 0; i < papp->n_args; i++) {
|
for (size_t i = 0; i < papp->n_args; i++) {
|
||||||
papp->args[i] = pgf_read_patt(rdr);
|
papp->args[i] = pgf_read_patt(rdr);
|
||||||
gu_return_on_exn(rdr->err, gu_null_variant);
|
gu_return_on_exn(rdr->err, gu_null_variant);
|
||||||
|
|||||||
Reference in New Issue
Block a user