mirror of
https://github.com/php/php-src.git
synced 2025-08-16 22:18:50 +02:00
Merge branch 'PHP-7.4'
This commit is contained in:
commit
1ab489e99a
3 changed files with 28 additions and 0 deletions
15
Zend/tests/static_method_non_existing_class.phpt
Normal file
15
Zend/tests/static_method_non_existing_class.phpt
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
--TEST--
|
||||||
|
Calling a static method on a non-existing class
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$str = "foo";
|
||||||
|
try {
|
||||||
|
Test::{$str . "bar"}();
|
||||||
|
} catch (Error $e) {
|
||||||
|
echo $e->getMessage(), "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
--EXPECT--
|
||||||
|
Class 'Test' not found
|
|
@ -3553,6 +3553,7 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, UNUSED|CLASS_FETCH|CONST|VAR,
|
||||||
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
||||||
if (UNEXPECTED(ce == NULL)) {
|
if (UNEXPECTED(ce == NULL)) {
|
||||||
ZEND_ASSERT(EG(exception));
|
ZEND_ASSERT(EG(exception));
|
||||||
|
FREE_UNFETCHED_OP2();
|
||||||
HANDLE_EXCEPTION();
|
HANDLE_EXCEPTION();
|
||||||
}
|
}
|
||||||
if (OP2_TYPE != IS_CONST) {
|
if (OP2_TYPE != IS_CONST) {
|
||||||
|
|
|
@ -5698,6 +5698,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C
|
||||||
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
||||||
if (UNEXPECTED(ce == NULL)) {
|
if (UNEXPECTED(ce == NULL)) {
|
||||||
ZEND_ASSERT(EG(exception));
|
ZEND_ASSERT(EG(exception));
|
||||||
|
|
||||||
HANDLE_EXCEPTION();
|
HANDLE_EXCEPTION();
|
||||||
}
|
}
|
||||||
if (IS_CONST != IS_CONST) {
|
if (IS_CONST != IS_CONST) {
|
||||||
|
@ -7887,6 +7888,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C
|
||||||
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
||||||
if (UNEXPECTED(ce == NULL)) {
|
if (UNEXPECTED(ce == NULL)) {
|
||||||
ZEND_ASSERT(EG(exception));
|
ZEND_ASSERT(EG(exception));
|
||||||
|
zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
|
||||||
HANDLE_EXCEPTION();
|
HANDLE_EXCEPTION();
|
||||||
}
|
}
|
||||||
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
|
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
|
||||||
|
@ -8633,6 +8635,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C
|
||||||
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
||||||
if (UNEXPECTED(ce == NULL)) {
|
if (UNEXPECTED(ce == NULL)) {
|
||||||
ZEND_ASSERT(EG(exception));
|
ZEND_ASSERT(EG(exception));
|
||||||
|
|
||||||
HANDLE_EXCEPTION();
|
HANDLE_EXCEPTION();
|
||||||
}
|
}
|
||||||
if (IS_UNUSED != IS_CONST) {
|
if (IS_UNUSED != IS_CONST) {
|
||||||
|
@ -10149,6 +10152,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C
|
||||||
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
||||||
if (UNEXPECTED(ce == NULL)) {
|
if (UNEXPECTED(ce == NULL)) {
|
||||||
ZEND_ASSERT(EG(exception));
|
ZEND_ASSERT(EG(exception));
|
||||||
|
|
||||||
HANDLE_EXCEPTION();
|
HANDLE_EXCEPTION();
|
||||||
}
|
}
|
||||||
if (IS_CV != IS_CONST) {
|
if (IS_CV != IS_CONST) {
|
||||||
|
@ -22645,6 +22649,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V
|
||||||
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
||||||
if (UNEXPECTED(ce == NULL)) {
|
if (UNEXPECTED(ce == NULL)) {
|
||||||
ZEND_ASSERT(EG(exception));
|
ZEND_ASSERT(EG(exception));
|
||||||
|
|
||||||
HANDLE_EXCEPTION();
|
HANDLE_EXCEPTION();
|
||||||
}
|
}
|
||||||
if (IS_CONST != IS_CONST) {
|
if (IS_CONST != IS_CONST) {
|
||||||
|
@ -24910,6 +24915,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V
|
||||||
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
||||||
if (UNEXPECTED(ce == NULL)) {
|
if (UNEXPECTED(ce == NULL)) {
|
||||||
ZEND_ASSERT(EG(exception));
|
ZEND_ASSERT(EG(exception));
|
||||||
|
zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
|
||||||
HANDLE_EXCEPTION();
|
HANDLE_EXCEPTION();
|
||||||
}
|
}
|
||||||
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
|
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
|
||||||
|
@ -26184,6 +26190,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V
|
||||||
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
||||||
if (UNEXPECTED(ce == NULL)) {
|
if (UNEXPECTED(ce == NULL)) {
|
||||||
ZEND_ASSERT(EG(exception));
|
ZEND_ASSERT(EG(exception));
|
||||||
|
|
||||||
HANDLE_EXCEPTION();
|
HANDLE_EXCEPTION();
|
||||||
}
|
}
|
||||||
if (IS_UNUSED != IS_CONST) {
|
if (IS_UNUSED != IS_CONST) {
|
||||||
|
@ -28460,6 +28467,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V
|
||||||
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
||||||
if (UNEXPECTED(ce == NULL)) {
|
if (UNEXPECTED(ce == NULL)) {
|
||||||
ZEND_ASSERT(EG(exception));
|
ZEND_ASSERT(EG(exception));
|
||||||
|
|
||||||
HANDLE_EXCEPTION();
|
HANDLE_EXCEPTION();
|
||||||
}
|
}
|
||||||
if (IS_CV != IS_CONST) {
|
if (IS_CV != IS_CONST) {
|
||||||
|
@ -30682,6 +30690,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U
|
||||||
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
||||||
if (UNEXPECTED(ce == NULL)) {
|
if (UNEXPECTED(ce == NULL)) {
|
||||||
ZEND_ASSERT(EG(exception));
|
ZEND_ASSERT(EG(exception));
|
||||||
|
|
||||||
HANDLE_EXCEPTION();
|
HANDLE_EXCEPTION();
|
||||||
}
|
}
|
||||||
if (IS_CONST != IS_CONST) {
|
if (IS_CONST != IS_CONST) {
|
||||||
|
@ -32604,6 +32613,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U
|
||||||
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
||||||
if (UNEXPECTED(ce == NULL)) {
|
if (UNEXPECTED(ce == NULL)) {
|
||||||
ZEND_ASSERT(EG(exception));
|
ZEND_ASSERT(EG(exception));
|
||||||
|
zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
|
||||||
HANDLE_EXCEPTION();
|
HANDLE_EXCEPTION();
|
||||||
}
|
}
|
||||||
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
|
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
|
||||||
|
@ -33027,6 +33037,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U
|
||||||
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
||||||
if (UNEXPECTED(ce == NULL)) {
|
if (UNEXPECTED(ce == NULL)) {
|
||||||
ZEND_ASSERT(EG(exception));
|
ZEND_ASSERT(EG(exception));
|
||||||
|
|
||||||
HANDLE_EXCEPTION();
|
HANDLE_EXCEPTION();
|
||||||
}
|
}
|
||||||
if (IS_UNUSED != IS_CONST) {
|
if (IS_UNUSED != IS_CONST) {
|
||||||
|
@ -35042,6 +35053,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U
|
||||||
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), Z_STR_P(RT_CONSTANT(opline, opline->op1) + 1), ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
|
||||||
if (UNEXPECTED(ce == NULL)) {
|
if (UNEXPECTED(ce == NULL)) {
|
||||||
ZEND_ASSERT(EG(exception));
|
ZEND_ASSERT(EG(exception));
|
||||||
|
|
||||||
HANDLE_EXCEPTION();
|
HANDLE_EXCEPTION();
|
||||||
}
|
}
|
||||||
if (IS_CV != IS_CONST) {
|
if (IS_CV != IS_CONST) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue