]> granicus.if.org Git - php/commitdiff
Removed a hack that allowed passing of function return value by reference depending...
authorDmitry Stogov <dmitry@zend.com>
Wed, 20 Aug 2014 11:04:40 +0000 (15:04 +0400)
committerDmitry Stogov <dmitry@zend.com>
Wed, 20 Aug 2014 11:04:40 +0000 (15:04 +0400)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index c71a0b7ed351e86241b9ac004ece68bd5f8135d1..a50f1431567103acad3b4a9a8cdec7698e2c0d62 100644 (file)
@@ -3077,10 +3077,7 @@ ZEND_VM_HANDLER(106, ZEND_SEND_VAR_NO_REF, VAR|CV, ANY)
        varptr = GET_OP1_ZVAL_PTR(BP_VAR_R);
        if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
             (Z_VAR_FLAGS_P(varptr) & IS_VAR_RET_REF)) &&
-           ((!Z_REFCOUNTED_P(varptr) && Z_TYPE_P(varptr) != IS_STRING) || 
-            Z_ISREF_P(varptr) ||
-            Z_TYPE_P(varptr) == IS_OBJECT ||
-            (Z_REFCOUNTED_P(varptr) && Z_REFCOUNT_P(varptr) == 1))) {
+           (Z_ISREF_P(varptr) || Z_TYPE_P(varptr) == IS_OBJECT)) {
 
                ZVAL_MAKE_REF(varptr);
                if (OP1_TYPE == IS_CV) {
index 40dab7a2d203bf5cdd797973fc43cb8cb2a7189c..f1909b65ce88490cb5cf5dc97134010924c9cabd 100644 (file)
@@ -13554,10 +13554,7 @@ static int ZEND_FASTCALL  ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HAND
        varptr = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
        if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
             (Z_VAR_FLAGS_P(varptr) & IS_VAR_RET_REF)) &&
-           ((!Z_REFCOUNTED_P(varptr) && Z_TYPE_P(varptr) != IS_STRING) ||
-            Z_ISREF_P(varptr) ||
-            Z_TYPE_P(varptr) == IS_OBJECT ||
-            (Z_REFCOUNTED_P(varptr) && Z_REFCOUNT_P(varptr) == 1))) {
+           (Z_ISREF_P(varptr) || Z_TYPE_P(varptr) == IS_OBJECT)) {
 
                ZVAL_MAKE_REF(varptr);
                if (IS_VAR == IS_CV) {
@@ -30934,10 +30931,7 @@ static int ZEND_FASTCALL  ZEND_SEND_VAR_NO_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL
        varptr = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
        if ((!(opline->extended_value & ZEND_ARG_SEND_FUNCTION) ||
             (Z_VAR_FLAGS_P(varptr) & IS_VAR_RET_REF)) &&
-           ((!Z_REFCOUNTED_P(varptr) && Z_TYPE_P(varptr) != IS_STRING) ||
-            Z_ISREF_P(varptr) ||
-            Z_TYPE_P(varptr) == IS_OBJECT ||
-            (Z_REFCOUNTED_P(varptr) && Z_REFCOUNT_P(varptr) == 1))) {
+           (Z_ISREF_P(varptr) || Z_TYPE_P(varptr) == IS_OBJECT)) {
 
                ZVAL_MAKE_REF(varptr);
                if (IS_CV == IS_CV) {