}
return;
}
- if (Z_TYPE(ctx->values[ssa_op->result_def]) == IS_NULL) {
+ case ZEND_ADD_ARRAY_UNPACK: {
+ zval *result = &ctx->values[ssa_op->result_use];
+ if (IS_BOT(result) || IS_BOT(op1)) {
+ SET_RESULT_BOT(result);
+ return;
+ }
+ SKIP_IF_TOP(result);
+ SKIP_IF_TOP(op1);
+
+ /* See comment for ADD_ARRAY_ELEMENT. */
++ if (Z_TYPE_P(result) == IS_NULL) {
+ SET_RESULT_BOT(result);
+ return;
+ }
+ ZVAL_COPY_VALUE(&zv, result);
+ ZVAL_NULL(result);
+
+ if (ct_eval_add_array_unpack(&zv, op1) == SUCCESS) {
+ SET_RESULT(result, &zv);
+ } else {
+ SET_RESULT_BOT(result);
+ }
+ zval_ptr_dtor_nogc(&zv);
+ return;
+ }
case ZEND_NEW:
if (ssa_op->result_def >= 0
&& ctx->scdf.ssa->vars[ssa_op->result_def].escape_state == ESCAPE_STATE_NO_ESCAPE) {