diff options
| author | Felipe Pena <felipe@php.net> | 2009-01-10 19:15:42 +0000 |
|---|---|---|
| committer | Felipe Pena <felipe@php.net> | 2009-01-10 19:15:42 +0000 |
| commit | 23f7fa57fe804d47be6f7f21891e1bb7c0991cfc (patch) | |
| tree | e53bc2b078e4a80842c0e36a4c0d657fa588bd40 /Zend/zend_vm_execute.h | |
| parent | ac9508b2866560d6d53062306a9a8a3b3a4de6a2 (diff) | |
| download | php-git-23f7fa57fe804d47be6f7f21891e1bb7c0991cfc.tar.gz | |
- MFH: Fixed bug #47054 (BC break in static functions called as dynamic)
Diffstat (limited to 'Zend/zend_vm_execute.h')
| -rw-r--r-- | Zend/zend_vm_execute.h | 112 |
1 files changed, 80 insertions, 32 deletions
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 3c7b0ca9f2..0139f65979 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -5923,15 +5923,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -6389,15 +6392,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -6857,15 +6863,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -7419,15 +7428,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_ if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -10271,15 +10283,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -12104,15 +12119,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -13933,15 +13951,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -16372,15 +16393,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_ if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -17741,15 +17765,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -18871,15 +18898,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPC if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -19945,15 +19975,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPC if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -21289,15 +21322,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -24126,15 +24162,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -25790,15 +25829,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_ if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -27506,15 +27548,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_ if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { @@ -29730,15 +29775,18 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H if (!EX(fbc)) { zend_error_noreturn(E_ERROR, "Call to undefined method %s::%s()", Z_OBJ_CLASS_NAME_P(EX(object)), function_name_strval); } + + EX(called_scope) = Z_OBJCE_P(EX(object)); } else { zend_error_noreturn(E_ERROR, "Call to a member function %s() on a non-object", function_name_strval); } - if (!EX(object) || (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + if (!EX(object)) { EX(called_scope) = NULL; EX(object) = NULL; + } else if (EX(fbc) && (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) != 0) { + EX(object) = NULL; } else { - EX(called_scope) = Z_OBJCE_P(EX(object)); if (!PZVAL_IS_REF(EX(object))) { Z_ADDREF_P(EX(object)); /* For $this pointer */ } else { |
