From a3e1930f1ce72e36d88845c2707d6dccd3fa9dcc Mon Sep 17 00:00:00 2001
From: Martin Karlgren <marty@roxen.com>
Date: Mon, 1 Jun 2015 23:13:50 +0200
Subject: [PATCH] Set type_field of the destination array in
 assign_array_level*().

---
 src/array.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/array.c b/src/array.c
index 70da9c0257..ac765f289b 100644
--- a/src/array.c
+++ b/src/array.c
@@ -2323,8 +2323,11 @@ void assign_array_level( struct array *a, struct array *b, int level )
             assign_array_level( a->item[i].u.array, b->item[i].u.array, level-1 );
         }
     }
-    else
-        assign_svalues( a->item, b->item, a->size, a->type_field|b->type_field );
+    else {
+      assign_svalues( a->item, b->item, a->size,
+		      a->type_field|b->type_field );
+      a->type_field = b->type_field;
+    }
 }
 
 /* Assign all elemnts in a at level to b.
@@ -2349,6 +2352,7 @@ void assign_array_level_value( struct array *a, struct svalue *b, int level )
         if( REFCOUNTED_TYPE(TYPEOF(*b)) )     *b->u.refs+=a->size;
         for( i=0; i<a->size; i++)
             a->item[i] = *b;
+	a->type_field = 1 << TYPEOF(*b);
     }
 }
 
-- 
GitLab