From 5a695e9f32f08458fa61fdc8f5ae2cc7f4bd71d4 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 1 Feb 2007 15:24:10 +0000 Subject: [PATCH] Fixed possible crash because of dereference of NULL --- Zend/zend_compile.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 4a6e3d875c..501fff83ff 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -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); } -- 2.50.1