]> granicus.if.org Git - php/commitdiff
Fixed possible crash because of dereference of NULL
authorDmitry Stogov <dmitry@php.net>
Thu, 1 Feb 2007 15:24:10 +0000 (15:24 +0000)
committerDmitry Stogov <dmitry@php.net>
Thu, 1 Feb 2007 15:24:10 +0000 (15:24 +0000)
Zend/zend_compile.c

index 4a6e3d875cf9e8580e2fec77cb4432b66e5597ef..501fff83ff4ec23360c5f27c55910db39738db82 100644 (file)
@@ -1801,23 +1801,21 @@ void zend_do_return(znode *expr, int do_end_vparse TSRMLS_DC)
 
        if (expr) {
                opline->op1 = *expr;
+
+               if (do_end_vparse) {
+                       if (zend_is_function_or_method_call(expr)) {
+                               opline->extended_value = ZEND_RETURNS_FUNCTION;
+                       }
+               } else if (CG(active_op_array)->return_reference &&
+                          expr->u.EA.type == ZEND_PARSED_NEW) {
+                       opline->extended_value = ZEND_RETURNS_NEW;
+                       zend_error(E_STRICT, "Returning the return value of new by reference is deprecated");
+               }
        } else {
                opline->op1.op_type = IS_CONST;
                INIT_ZVAL(opline->op1.u.constant);
        }
 
-       if (do_end_vparse) {
-               if (zend_is_function_or_method_call(expr)) {
-                       opline->extended_value = ZEND_RETURNS_FUNCTION;
-               } else {
-                       opline->extended_value = 0;
-               }
-       } else if (CG(active_op_array)->return_reference &&
-                  expr && expr->u.EA.type == ZEND_PARSED_NEW) {
-               opline->extended_value = ZEND_RETURNS_NEW;
-               zend_error(E_STRICT, "Returning the return value of new by reference is deprecated");
-       }
-
        SET_UNUSED(opline->op2);
 }