diff options
author | Leo Tenenbaum <pommicket@gmail.com> | 2019-12-10 10:35:14 -0500 |
---|---|---|
committer | Leo Tenenbaum <pommicket@gmail.com> | 2019-12-10 10:35:14 -0500 |
commit | bc009f5a471e632470861820c74c7a3bbac06961 (patch) | |
tree | dc60ecc43f5e6ef6284a77922e438a96b1b5dc5c /copy.c | |
parent | e73b5a6cb8930d8fc46edd0112d1e292746b7ada (diff) |
made Expression smaller
Diffstat (limited to 'copy.c')
-rw-r--r-- | copy.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -185,8 +185,10 @@ static void copy_expr(Copier *c, Expression *out, Expression *in) { copy_block(c, &wout->body, &win->body); } break; case EXPR_EACH: { - EachExpr *ein = &in->each; - EachExpr *eout = &out->each; + EachExpr *ein = in->each; + EachExpr *eout = allocr_malloc(a, sizeof *eout); + out->each = eout; + *eout = *ein; if (ein->flags & EACH_ANNOTATED_TYPE) copy_type(c, &eout->type, &ein->type); if (ein->flags & EACH_IS_RANGE) { @@ -201,7 +203,7 @@ static void copy_expr(Copier *c, Expression *out, Expression *in) { copy_block(c, &eout->body, &ein->body); } break; case EXPR_FN: - copy_fn_expr(c, &out->fn, &in->fn, true); + copy_fn_expr(c, out->fn = allocr_malloc(a, sizeof *out->fn), in->fn, true); break; case EXPR_CAST: { CastExpr *cin = &in->cast; |