]> granicus.if.org Git - php/commitdiff
Initialize VAR_FLAGS for generators
authorNikita Popov <nikic@php.net>
Fri, 17 Apr 2015 19:50:36 +0000 (21:50 +0200)
committerNikita Popov <nikic@php.net>
Fri, 17 Apr 2015 19:51:49 +0000 (21:51 +0200)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 28bde464a7482971efa4c1bca4b803d98596c78d..fa1a187f148f025448a2914b596058aef0ebabd3 100644 (file)
@@ -3469,7 +3469,9 @@ ZEND_VM_HANDLER(131, ZEND_DO_FCALL_BY_NAME, ANY, ANY)
                EG(scope) = NULL;
                if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
                        if (RETURN_VALUE_USED(opline)) {
-                               zend_generator_create_zval(call, &fbc->op_array, EX_VAR(opline->result.var));
+                               ret = EX_VAR(opline->result.var);
+                               zend_generator_create_zval(call, &fbc->op_array, ret);
+                               Z_VAR_FLAGS_P(ret) = 0;
                        } else {
                                zend_vm_stack_free_args(call);
                        }
@@ -3592,7 +3594,9 @@ ZEND_VM_HANDLER(60, ZEND_DO_FCALL, ANY, ANY)
                EG(scope) = fbc->common.scope;
                if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
                        if (RETURN_VALUE_USED(opline)) {
-                               zend_generator_create_zval(call, &fbc->op_array, EX_VAR(opline->result.var));
+                               ret = EX_VAR(opline->result.var);
+                               zend_generator_create_zval(call, &fbc->op_array, ret);
+                               Z_VAR_FLAGS_P(ret) = 0;
                        } else {
                                zend_vm_stack_free_args(call);
                        }
index c969a302cf8c992da1e04532d2a31ccc1a00e74d..f991caf834d93f8e3c643d594f597d788442cdd2 100644 (file)
@@ -626,7 +626,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_SPEC_HANDLER(
                EG(scope) = NULL;
                if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
                        if (RETURN_VALUE_USED(opline)) {
-                               zend_generator_create_zval(call, &fbc->op_array, EX_VAR(opline->result.var));
+                               ret = EX_VAR(opline->result.var);
+                               zend_generator_create_zval(call, &fbc->op_array, ret);
+                               Z_VAR_FLAGS_P(ret) = 0;
                        } else {
                                zend_vm_stack_free_args(call);
                        }
@@ -749,7 +751,9 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_HANDLER(ZEND_OPC
                EG(scope) = fbc->common.scope;
                if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
                        if (RETURN_VALUE_USED(opline)) {
-                               zend_generator_create_zval(call, &fbc->op_array, EX_VAR(opline->result.var));
+                               ret = EX_VAR(opline->result.var);
+                               zend_generator_create_zval(call, &fbc->op_array, ret);
+                               Z_VAR_FLAGS_P(ret) = 0;
                        } else {
                                zend_vm_stack_free_args(call);
                        }