Skip to content

Commit 70cb372

Browse files
committed
Merge branch 'PHP-8.0' into PHP-8.1
* PHP-8.0: Fixed bug #81631
2 parents 6641e3b + 4d4fe76 commit 70cb372

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

Zend/tests/bug81631.phpt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
--TEST--
2+
Bug #81631: ::class with dynamic class name may yield wrong line number
3+
--FILE--
4+
<?php
5+
$a = 0;
6+
var_dump($b::class);
7+
?>
8+
--EXPECTF--
9+
Warning: Undefined variable $b in %s on line 3
10+
11+
Fatal error: Uncaught TypeError: Cannot use "::class" on value of type null in %s:3
12+
Stack trace:
13+
#0 {main}
14+
thrown in %s on line 3

Zend/zend_vm_def.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8476,8 +8476,8 @@ ZEND_VM_HANDLER(157, ZEND_FETCH_CLASS_NAME, CV|TMPVAR|UNUSED|CLASS_FETCH, ANY)
84768476
USE_OPLINE
84778477

84788478
if (OP1_TYPE != IS_UNUSED) {
8479-
zval *op = GET_OP1_ZVAL_PTR(BP_VAR_R);
84808479
SAVE_OPLINE();
8480+
zval *op = GET_OP1_ZVAL_PTR(BP_VAR_R);
84818481
if (UNEXPECTED(Z_TYPE_P(op) != IS_OBJECT)) {
84828482
ZVAL_DEREF(op);
84838483
if (Z_TYPE_P(op) != IS_OBJECT) {

Zend/zend_vm_execute.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14738,8 +14738,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_NAME_SPEC_TMPVAR_H
1473814738
USE_OPLINE
1473914739

1474014740
if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
14741-
zval *op = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
1474214741
SAVE_OPLINE();
14742+
zval *op = _get_zval_ptr_var(opline->op1.var EXECUTE_DATA_CC);
1474314743
if (UNEXPECTED(Z_TYPE_P(op) != IS_OBJECT)) {
1474414744
ZVAL_DEREF(op);
1474514745
if (Z_TYPE_P(op) != IS_OBJECT) {
@@ -31084,8 +31084,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_NAME_SPEC_UNUSED_H
3108431084
USE_OPLINE
3108531085

3108631086
if (IS_UNUSED != IS_UNUSED) {
31087-
zval *op = NULL;
3108831087
SAVE_OPLINE();
31088+
zval *op = NULL;
3108931089
if (UNEXPECTED(Z_TYPE_P(op) != IS_OBJECT)) {
3109031090
ZVAL_DEREF(op);
3109131091
if (Z_TYPE_P(op) != IS_OBJECT) {
@@ -38651,8 +38651,8 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_NAME_SPEC_CV_HANDL
3865138651
USE_OPLINE
3865238652

3865338653
if (IS_CV != IS_UNUSED) {
38654-
zval *op = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
3865538654
SAVE_OPLINE();
38655+
zval *op = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
3865638656
if (UNEXPECTED(Z_TYPE_P(op) != IS_OBJECT)) {
3865738657
ZVAL_DEREF(op);
3865838658
if (Z_TYPE_P(op) != IS_OBJECT) {

0 commit comments

Comments
 (0)