]> granicus.if.org Git - php/commitdiff
Fixed memory leak in foreach() on undefined variable (Zend/tests/foreach_undefined...
authorDmitry Stogov <dmitry@php.net>
Fri, 5 Aug 2005 06:29:46 +0000 (06:29 +0000)
committerDmitry Stogov <dmitry@php.net>
Fri, 5 Aug 2005 06:29:46 +0000 (06:29 +0000)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 98befb3bb8fd74e290e23e3c465a6f21c9b81347..1dfc8164a1df3ee032815e186b434beb025e292f 100644 (file)
@@ -2953,7 +2953,7 @@ ZEND_VM_HANDLER(77, ZEND_FE_RESET, CONST|TMP|VAR|CV, ANY)
 
        if (opline->extended_value) {
                array_ptr_ptr = GET_OP1_ZVAL_PTR_PTR(BP_VAR_R);
-               if (array_ptr_ptr == NULL) {
+               if (array_ptr_ptr == NULL || array_ptr_ptr == &EG(uninitialized_zval_ptr)) {
                        ALLOC_INIT_ZVAL(array_ptr);
                } else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
                        if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
index 6d80a03f563ccd7867501f5b1321caa2fff4189f..2b6662a150dc7c0f8ccf2573cd682ac766c75a85 100644 (file)
@@ -2007,7 +2007,7 @@ static int ZEND_FE_RESET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 
        if (opline->extended_value) {
                array_ptr_ptr = NULL;
-               if (array_ptr_ptr == NULL) {
+               if (array_ptr_ptr == NULL || array_ptr_ptr == &EG(uninitialized_zval_ptr)) {
                        ALLOC_INIT_ZVAL(array_ptr);
                } else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
                        if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
@@ -4424,7 +4424,7 @@ static int ZEND_FE_RESET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 
        if (opline->extended_value) {
                array_ptr_ptr = NULL;
-               if (array_ptr_ptr == NULL) {
+               if (array_ptr_ptr == NULL || array_ptr_ptr == &EG(uninitialized_zval_ptr)) {
                        ALLOC_INIT_ZVAL(array_ptr);
                } else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
                        if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
@@ -7444,7 +7444,7 @@ static int ZEND_FE_RESET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 
        if (opline->extended_value) {
                array_ptr_ptr = _get_zval_ptr_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
-               if (array_ptr_ptr == NULL) {
+               if (array_ptr_ptr == NULL || array_ptr_ptr == &EG(uninitialized_zval_ptr)) {
                        ALLOC_INIT_ZVAL(array_ptr);
                } else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
                        if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {
@@ -19484,7 +19484,7 @@ static int ZEND_FE_RESET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 
        if (opline->extended_value) {
                array_ptr_ptr = _get_zval_ptr_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
-               if (array_ptr_ptr == NULL) {
+               if (array_ptr_ptr == NULL || array_ptr_ptr == &EG(uninitialized_zval_ptr)) {
                        ALLOC_INIT_ZVAL(array_ptr);
                } else if (Z_TYPE_PP(array_ptr_ptr) == IS_OBJECT) {
                        if(Z_OBJ_HT_PP(array_ptr_ptr)->get_class_entry == NULL) {