]> Nishi Git Mirror - gwion.git/commitdiff
:art: Fix bug with foreach
authorJérémie Astor <fennecdjay@gmail.com>
Sun, 15 Aug 2021 19:07:26 +0000 (21:07 +0200)
committerJérémie Astor <fennecdjay@gmail.com>
Sun, 15 Aug 2021 19:07:26 +0000 (21:07 +0200)
src/clean.c
src/parse/check.c

index 3adaf1d9e51a8478f7ae8c3dfa3dac172c637882..71fd2bde3aaf5b0e3fee525444492dcccbde4c5e 100644 (file)
@@ -163,7 +163,8 @@ ANN static void clean_stmt_each(Clean *a, Stmt_Each b) {
   ++a->scope;
   clean_exp(a, b->exp);
   clean_stmt(a, b->body);
-  if (b->v) value_remref(b->v, a->gwion);
+//  if (b->v) value_remref(b->v, a->gwion);
+  if (b->v) mp_free(a->gwion->mp, Value, b);
   if (b->idx) clean_idx(a, b->idx);
   --a->scope;
 }
index ce7cf85940af58a30ea59fd1f5c5da6c3bdeb132..17fe2b3a5f98377026557b8c308d8bb1f9e3775c 100644 (file)
@@ -1161,6 +1161,7 @@ ANN static void check_idx(const Env env, struct EachIdx_ *const idx) {
   idx->v =
       new_value(env->gwion->mp, env->gwion->type[et_int], s_name(idx->sym));
   valuefrom(env, idx->v->from, idx->pos);
+  idx->v->from->owner_class = NULL;
   set_vflag(idx->v, vflag_valid);
   nspc_add_value(env->curr, idx->sym, idx->v);
 }