int l_null = -1;
int l_false = -1;
int l_true = -1;
+ int l_empty_arr = -1;
HashTable hash;
zend_string *key = NULL;
void *checkpoint = zend_arena_checkpoint(ctx->arena);
}
}
break;
+ case IS_ARRAY:
+ if (zend_hash_num_elements(Z_ARRVAL(op_array->literals[i])) == 0) {
+ if (l_empty_arr < 0) {
+ l_empty_arr = j;
+ if (i != j) {
+ op_array->literals[j] = op_array->literals[i];
+ info[j] = info[i];
+ }
+ j++;
+ } else {
+ zval_dtor(&op_array->literals[i]);
+ }
+ map[i] = l_empty_arr;
+ break;
+ }
+ /* break missing intentionally */
default:
/* don't merge other types */
map[i] = j;