Skip to content

Commit 4ba8d78

Browse files
committed
Merge branch 'PHP-7.2' into PHP-7.3
2 parents a016341 + 96c84b7 commit 4ba8d78

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
@@ -3161,6 +3161,7 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, UNUSED|CLASS_FETCH|CONST|VAR,
31613161
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
31623162
if (UNEXPECTED(ce == NULL)) {
31633163
ZEND_ASSERT(EG(exception));
3164+
FREE_UNFETCHED_OP2();
31643165
HANDLE_EXCEPTION();
31653166
}
31663167
if (OP2_TYPE != IS_CONST) {

Zend/zend_vm_execute.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5209,6 +5209,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C
52095209
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
52105210
if (UNEXPECTED(ce == NULL)) {
52115211
ZEND_ASSERT(EG(exception));
5212+
52125213
HANDLE_EXCEPTION();
52135214
}
52145215
if (IS_CONST != IS_CONST) {
@@ -7390,6 +7391,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C
73907391
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
73917392
if (UNEXPECTED(ce == NULL)) {
73927393
ZEND_ASSERT(EG(exception));
7394+
zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
73937395
HANDLE_EXCEPTION();
73947396
}
73957397
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
@@ -8623,6 +8625,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C
86238625
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
86248626
if (UNEXPECTED(ce == NULL)) {
86258627
ZEND_ASSERT(EG(exception));
8628+
86268629
HANDLE_EXCEPTION();
86278630
}
86288631
if (IS_UNUSED != IS_CONST) {
@@ -10490,6 +10493,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_C
1049010493
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
1049110494
if (UNEXPECTED(ce == NULL)) {
1049210495
ZEND_ASSERT(EG(exception));
10496+
1049310497
HANDLE_EXCEPTION();
1049410498
}
1049510499
if (IS_CV != IS_CONST) {
@@ -23505,6 +23509,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V
2350523509
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
2350623510
if (UNEXPECTED(ce == NULL)) {
2350723511
ZEND_ASSERT(EG(exception));
23512+
2350823513
HANDLE_EXCEPTION();
2350923514
}
2351023515
if (IS_CONST != IS_CONST) {
@@ -25819,6 +25824,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V
2581925824
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
2582025825
if (UNEXPECTED(ce == NULL)) {
2582125826
ZEND_ASSERT(EG(exception));
25827+
zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
2582225828
HANDLE_EXCEPTION();
2582325829
}
2582425830
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
@@ -27378,6 +27384,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V
2737827384
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
2737927385
if (UNEXPECTED(ce == NULL)) {
2738027386
ZEND_ASSERT(EG(exception));
27387+
2738127388
HANDLE_EXCEPTION();
2738227389
}
2738327390
if (IS_UNUSED != IS_CONST) {
@@ -29816,6 +29823,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_V
2981629823
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
2981729824
if (UNEXPECTED(ce == NULL)) {
2981829825
ZEND_ASSERT(EG(exception));
29826+
2981929827
HANDLE_EXCEPTION();
2982029828
}
2982129829
if (IS_CV != IS_CONST) {
@@ -31918,6 +31926,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U
3191831926
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
3191931927
if (UNEXPECTED(ce == NULL)) {
3192031928
ZEND_ASSERT(EG(exception));
31929+
3192131930
HANDLE_EXCEPTION();
3192231931
}
3192331932
if (IS_CONST != IS_CONST) {
@@ -33653,6 +33662,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U
3365333662
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
3365433663
if (UNEXPECTED(ce == NULL)) {
3365533664
ZEND_ASSERT(EG(exception));
33665+
zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
3365633666
HANDLE_EXCEPTION();
3365733667
}
3365833668
if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
@@ -34191,6 +34201,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U
3419134201
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
3419234202
if (UNEXPECTED(ce == NULL)) {
3419334203
ZEND_ASSERT(EG(exception));
34204+
3419434205
HANDLE_EXCEPTION();
3419534206
}
3419634207
if (IS_UNUSED != IS_CONST) {
@@ -36032,6 +36043,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_U
3603236043
ce = zend_fetch_class_by_name(Z_STR_P(RT_CONSTANT(opline, opline->op1)), RT_CONSTANT(opline, opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
3603336044
if (UNEXPECTED(ce == NULL)) {
3603436045
ZEND_ASSERT(EG(exception));
36046+
3603536047
HANDLE_EXCEPTION();
3603636048
}
3603736049
if (IS_CV != IS_CONST) {

0 commit comments

Comments
 (0)