]> granicus.if.org Git - php/commitdiff
Fixed IS_REFERENCE handling
authorDmitry Stogov <dmitry@zend.com>
Tue, 25 Feb 2014 09:47:33 +0000 (13:47 +0400)
committerDmitry Stogov <dmitry@zend.com>
Tue, 25 Feb 2014 09:47:33 +0000 (13:47 +0400)
Zend/zend_closures.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index a654736244f66051985d73a3d16c15aaf16c1e2c..839a3ad41b6afa3478b9e22f4857f9d9d11109d6 100644 (file)
@@ -170,7 +170,7 @@ static zend_function *zend_closure_get_method(zval *object_ptr, zend_string *met
        lc_name = STR_ALLOC(method->len, 0);
        zend_str_tolower_copy(lc_name->val, method->val, method->len);
        if ((method->len == sizeof(ZEND_INVOKE_FUNC_NAME)-1) &&
-               memcmp(lc_name, ZEND_INVOKE_FUNC_NAME, sizeof(ZEND_INVOKE_FUNC_NAME)-1) == 0
+               memcmp(lc_name->val, ZEND_INVOKE_FUNC_NAME, sizeof(ZEND_INVOKE_FUNC_NAME)-1) == 0
        ) {
                STR_FREE(lc_name);
                return zend_get_closure_invoke_method(object_ptr TSRMLS_CC);
index ee828e72463d5dbf4a55b278a88dc308440badaa..d0e17cea51e3a8e94fb8f6e163e2d503e1b29fb7 100644 (file)
@@ -2601,7 +2601,7 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMP|VAR|CV)
                zend_free_op free_op2;
 
                SAVE_OPLINE();
-               function_name = GET_OP2_ZVAL_PTR(BP_VAR_R);
+               function_name = GET_OP2_ZVAL_PTR_DEREF(BP_VAR_R);
 
                if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
                        if (Z_STRVAL_P(function_name)[0] == '\\') {
index f42462d118ca305455aaa3b82afa53c71034a7a5..f04ef2b319cefed7280e033d895cce6acedf7aba 100644 (file)
@@ -1955,7 +1955,7 @@ static int ZEND_FASTCALL  ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_H
                zend_free_op free_op2;
 
                SAVE_OPLINE();
-               function_name = _get_zval_ptr_var(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
+               function_name = _get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2 TSRMLS_CC);
 
                if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
                        if (Z_STRVAL_P(function_name)[0] == '\\') {
@@ -2185,7 +2185,7 @@ static int ZEND_FASTCALL  ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HA
 
 
                SAVE_OPLINE();
-               function_name = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
+               function_name = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC);
 
                if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
                        if (Z_STRVAL_P(function_name)[0] == '\\') {