diff --git a/src/encode.c b/src/encode.c index 72e9b1a7e4bd4fb3dc530e2eb151349a610b3bd6..fd124983a043ea190a8269537b672037cdf9855b 100644 --- a/src/encode.c +++ b/src/encode.c @@ -2792,7 +2792,7 @@ static void decode_value2(struct decode_data *data) SETUP_DECODE_MEMOBJ (T_MULTISET, multiset, m, allocate_multiset (0, 0, NULL), ;); /* FIXME: This array could be avoided by building the multiset directly. */ - a = low_allocate_array (num, 0); + push_array(a = low_allocate_array (num, 0)); types = 0; for(e=0;e<num;e++) @@ -2804,7 +2804,7 @@ static void decode_value2(struct decode_data *data) a->type_field = types; { struct multiset *l = mkmultiset (a); - free_array (a); + pop_stack(); /* This special case is handled efficiently by merge_multisets. */ merge_multisets (m, l, PIKE_MERGE_DESTR_A | PIKE_ARRAY_OP_ADD); free_multiset (l);