Skip to content

Commit b02cf8b

Browse files
committed
Merge branch 'PHP-7.3' into PHP-7.4
2 parents 6878c58 + 4ba8d78 commit b02cf8b

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
--TEST--
2+
Calling a static method on a non-existing class
3+
--FILE--
4+
<?php
5+
6+
$str = "foo";
7+
try {
8+
Test::{$str . "bar"}();
9+
} catch (Error $e) {
10+
echo $e->getMessage(), "\n";
11+
}
12+
13+
?>
14+
--EXPECT--
15+
Class 'Test' not found

Zend/zend_vm_def.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3631,6 +3631,7 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, UNUSED|CLASS_FETCH|CONST|VAR,
36313631
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);
36323632
if (UNEXPECTED(ce == NULL)) {
36333633
ZEND_ASSERT(EG(exception));
3634+
FREE_UNFETCHED_OP2();
36343635
HANDLE_EXCEPTION();
36353636
}
36363637
if (OP2_TYPE != IS_CONST) {

Zend/zend_vm_execute.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5828,6 +5828,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C
58285828
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);
58295829
if (UNEXPECTED(ce == NULL)) {
58305830
ZEND_ASSERT(EG(exception));
5831+
58315832
HANDLE_EXCEPTION();
58325833
}
58335834
if (IS_CONST != IS_CONST) {
@@ -8089,6 +8090,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C
80898090
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);
80908091
if (UNEXPECTED(ce == NULL)) {
80918092
ZEND_ASSERT(EG(exception));
8093+
zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
80928094
HANDLE_EXCEPTION();
80938095
}
80948096
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
@@ -9006,6 +9008,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C
90069008
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);
90079009
if (UNEXPECTED(ce == NULL)) {
90089010
ZEND_ASSERT(EG(exception));
9011+
90099012
HANDLE_EXCEPTION();
90109013
}
90119014
if (IS_UNUSED != IS_CONST) {
@@ -10541,6 +10544,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C
1054110544
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);
1054210545
if (UNEXPECTED(ce == NULL)) {
1054310546
ZEND_ASSERT(EG(exception));
10547+
1054410548
HANDLE_EXCEPTION();
1054510549
}
1054610550
if (IS_CV != IS_CONST) {
@@ -23662,6 +23666,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V
2366223666
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);
2366323667
if (UNEXPECTED(ce == NULL)) {
2366423668
ZEND_ASSERT(EG(exception));
23669+
2366523670
HANDLE_EXCEPTION();
2366623671
}
2366723672
if (IS_CONST != IS_CONST) {
@@ -25883,6 +25888,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V
2588325888
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);
2588425889
if (UNEXPECTED(ce == NULL)) {
2588525890
ZEND_ASSERT(EG(exception));
25891+
zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
2588625892
HANDLE_EXCEPTION();
2588725893
}
2588825894
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
@@ -27379,6 +27385,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V
2737927385
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);
2738027386
if (UNEXPECTED(ce == NULL)) {
2738127387
ZEND_ASSERT(EG(exception));
27388+
2738227389
HANDLE_EXCEPTION();
2738327390
}
2738427391
if (IS_UNUSED != IS_CONST) {
@@ -29641,6 +29648,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V
2964129648
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);
2964229649
if (UNEXPECTED(ce == NULL)) {
2964329650
ZEND_ASSERT(EG(exception));
29651+
2964429652
HANDLE_EXCEPTION();
2964529653
}
2964629654
if (IS_CV != IS_CONST) {
@@ -31767,6 +31775,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U
3176731775
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);
3176831776
if (UNEXPECTED(ce == NULL)) {
3176931777
ZEND_ASSERT(EG(exception));
31778+
3177031779
HANDLE_EXCEPTION();
3177131780
}
3177231781
if (IS_CONST != IS_CONST) {
@@ -33579,6 +33588,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U
3357933588
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);
3358033589
if (UNEXPECTED(ce == NULL)) {
3358133590
ZEND_ASSERT(EG(exception));
33591+
zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
3358233592
HANDLE_EXCEPTION();
3358333593
}
3358433594
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
@@ -34143,6 +34153,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U
3414334153
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);
3414434154
if (UNEXPECTED(ce == NULL)) {
3414534155
ZEND_ASSERT(EG(exception));
34156+
3414634157
HANDLE_EXCEPTION();
3414734158
}
3414834159
if (IS_UNUSED != IS_CONST) {
@@ -36074,6 +36085,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U
3607436085
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);
3607536086
if (UNEXPECTED(ce == NULL)) {
3607636087
ZEND_ASSERT(EG(exception));
36088+
3607736089
HANDLE_EXCEPTION();
3607836090
}
3607936091
if (IS_CV != IS_CONST) {

0 commit comments

Comments
 (0)