diff options
Diffstat (limited to 'src/runtime/c/pgf')
| -rw-r--r-- | src/runtime/c/pgf/parser.c | 10 | ||||
| -rw-r--r-- | src/runtime/c/pgf/reader.c | 10 |
2 files changed, 12 insertions, 8 deletions
diff --git a/src/runtime/c/pgf/parser.c b/src/runtime/c/pgf/parser.c index 0cf588aa1..7ca9babd8 100644 --- a/src/runtime/c/pgf/parser.c +++ b/src/runtime/c/pgf/parser.c @@ -2195,12 +2195,10 @@ pgf_parse_result(PgfParseState* state) pgf_parsing_print_counts(state->ps); #endif - PgfExprEnum* en = - &gu_new_i(state->ps->pool, PgfParseResult, - .state = state, - .en.next = pgf_parse_result_enum_next)->en; - - return en; + PgfParseResult* res = gu_new(PgfParseResult, state->ps->pool); + res->state = state; + res->en.next = pgf_parse_result_enum_next; + return &res->en; } void diff --git a/src/runtime/c/pgf/reader.c b/src/runtime/c/pgf/reader.c index f58809ef5..36eebee43 100644 --- a/src/runtime/c/pgf/reader.c +++ b/src/runtime/c/pgf/reader.c @@ -76,8 +76,14 @@ pgf_read_len(PgfReader* rdr) // immediately. gu_return_on_exn(rdr->err, 0); if (len < 0) { - gu_raise_i(rdr->err, PgfReadTagExn, - .type = gu_type(GuLength), .tag = len); + GuExnData* err_data = gu_raise(rdr->err, PgfReadTagExn); + if (err_data) { + PgfReadTagExn* rtag = gu_new(PgfReadTagExn, err_data->pool); + rtag->type = gu_type(GuLength); + rtag->tag = len; + err_data->data = rtag; + } + return 0; } return (GuLength) len; |
