]> Nishi Git Mirror - gwion.git/commitdiff
:bug: Few fixes
authorJérémie Astor <astor.jeremie@wanadoo.fr>
Thu, 12 Mar 2020 18:31:52 +0000 (19:31 +0100)
committerJérémie Astor <astor.jeremie@wanadoo.fr>
Thu, 12 Mar 2020 18:31:52 +0000 (19:31 +0100)
src/parse/scan1.c
src/parse/scan2.c

index 7b4c8ab8e679becd85a0a2c32c51ffc758d6a430..2dd7e81705784079c6ef12d4df5d3a4179f04292 100644 (file)
@@ -272,13 +272,16 @@ ANN m_bool scan1_enum_def(const Env env, const Enum_Def edef) {
   return GW_OK;
 }
 
-ANN static Value arg_value(MemPool p, const Arg_List list) {
+ANN static Value arg_value(const Env env, const Arg_List list) {
   const Var_Decl var = list->var_decl;
-  const Value v = new_value(p, list->type, var->xid ? s_name(var->xid) : (m_str)__func__);
+  const Value v = new_value(env->gwion->mp, list->type, var->xid ? s_name(var->xid) : (m_str)__func__);
+  if(var->array)
+      v->type = /*list->type = */array_type(env, list->type, var->array->depth);
   if(list->td)
     v->flag = list->td->flag | ae_flag_arg;
   return v;
 }
+
 ANN static m_bool scan1_args(const Env env, Arg_List list) {
   do {
     const Var_Decl var = list->var_decl;
@@ -286,7 +289,7 @@ ANN static m_bool scan1_args(const Env env, Arg_List list) {
       CHECK_BB(isres(env, var->xid, var->pos))
     if(list->td)
       CHECK_OB((list->type = void_type(env, list->td)))
-    var->value = arg_value(env->gwion->mp, list);
+    var->value = arg_value(env, list);
     nspc_add_value(env->curr, var->xid, var->value);
   } while((list = list->next));
   return GW_OK;
index ec8b2f5ec5d9ebc696e11a23d2c4ca0eb96d87d7..c692a813c3431f3555395c474c6521589ac80354 100644 (file)
@@ -42,8 +42,9 @@ ANN static m_bool scan2_args(const Env env, const Func_Def f) {
   Arg_List list = f->base->args;
   do {
     const Var_Decl var = list->var_decl;
-    if(var->array)
-      list->type = array_type(env, list->type, var->array->depth);
+    if(var->array) {
+      var->value->type = list->type = array_type(env, list->type, var->array->depth);
+    }
     var->value->from->offset = f->stack_depth;
     f->stack_depth += list->type->size;
   } while((list = list->next));