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