Merge branch 'PHP-7.3' into PHP-7.4
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 10 Oct 2019 09:41:51 +0000 (11:41 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 10 Oct 2019 09:41:51 +0000 (11:41 +0200)
1  2 
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 0c1ab106b3e7b4bce5873c683be11d10f7625b79,c7fed805859bb8b9a0a03143fad039c8bd69edba..287466df4ba64c79ebaa79aa2fef8a37ab1e4e8b
@@@ -3628,9 -3158,10 +3628,10 @@@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_M
                /* no function found. try a static method in class */
                ce = CACHED_PTR(opline->result.num);
                if (UNEXPECTED(ce == NULL)) {
 -                      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);
 +                      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)) {
                                ZEND_ASSERT(EG(exception));
+                               FREE_UNFETCHED_OP2();
                                HANDLE_EXCEPTION();
                        }
                        if (OP2_TYPE != IS_CONST) {
index f1b46fbd97d007e39ff73a193e335b9d923feeb3,f935b6c9f53e63393bb7c1662ac6fcc7fc5b8b39..bb01bb1ee3339180a887e156efd9876a6f7c9c85
@@@ -5825,9 -5206,10 +5825,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                /* no function found. try a static method in class */
                ce = CACHED_PTR(opline->result.num);
                if (UNEXPECTED(ce == NULL)) {
 -                      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);
 +                      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)) {
                                ZEND_ASSERT(EG(exception));
                                HANDLE_EXCEPTION();
                        }
                        if (IS_CONST != IS_CONST) {
@@@ -8086,9 -7388,10 +8087,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                /* no function found. try a static method in class */
                ce = CACHED_PTR(opline->result.num);
                if (UNEXPECTED(ce == NULL)) {
 -                      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);
 +                      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)) {
                                ZEND_ASSERT(EG(exception));
+                               zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
                                HANDLE_EXCEPTION();
                        }
                        if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
@@@ -9003,9 -8622,10 +9005,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                /* no function found. try a static method in class */
                ce = CACHED_PTR(opline->result.num);
                if (UNEXPECTED(ce == NULL)) {
 -                      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);
 +                      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)) {
                                ZEND_ASSERT(EG(exception));
                                HANDLE_EXCEPTION();
                        }
                        if (IS_UNUSED != IS_CONST) {
@@@ -10538,9 -10490,10 +10541,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                /* no function found. try a static method in class */
                ce = CACHED_PTR(opline->result.num);
                if (UNEXPECTED(ce == NULL)) {
 -                      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);
 +                      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)) {
                                ZEND_ASSERT(EG(exception));
                                HANDLE_EXCEPTION();
                        }
                        if (IS_CV != IS_CONST) {
@@@ -23659,9 -23506,10 +23663,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                /* no function found. try a static method in class */
                ce = CACHED_PTR(opline->result.num);
                if (UNEXPECTED(ce == NULL)) {
 -                      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);
 +                      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)) {
                                ZEND_ASSERT(EG(exception));
                                HANDLE_EXCEPTION();
                        }
                        if (IS_CONST != IS_CONST) {
@@@ -25880,9 -25821,10 +25885,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                /* no function found. try a static method in class */
                ce = CACHED_PTR(opline->result.num);
                if (UNEXPECTED(ce == NULL)) {
 -                      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);
 +                      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)) {
                                ZEND_ASSERT(EG(exception));
+                               zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
                                HANDLE_EXCEPTION();
                        }
                        if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
@@@ -27376,9 -27381,10 +27382,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                /* no function found. try a static method in class */
                ce = CACHED_PTR(opline->result.num);
                if (UNEXPECTED(ce == NULL)) {
 -                      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);
 +                      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)) {
                                ZEND_ASSERT(EG(exception));
                                HANDLE_EXCEPTION();
                        }
                        if (IS_UNUSED != IS_CONST) {
@@@ -29638,9 -29820,10 +29645,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                /* no function found. try a static method in class */
                ce = CACHED_PTR(opline->result.num);
                if (UNEXPECTED(ce == NULL)) {
 -                      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);
 +                      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)) {
                                ZEND_ASSERT(EG(exception));
                                HANDLE_EXCEPTION();
                        }
                        if (IS_CV != IS_CONST) {
@@@ -31764,9 -31923,10 +31772,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                /* no function found. try a static method in class */
                ce = CACHED_PTR(opline->result.num);
                if (UNEXPECTED(ce == NULL)) {
 -                      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);
 +                      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)) {
                                ZEND_ASSERT(EG(exception));
                                HANDLE_EXCEPTION();
                        }
                        if (IS_CONST != IS_CONST) {
@@@ -33576,9 -33659,10 +33585,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                /* no function found. try a static method in class */
                ce = CACHED_PTR(opline->result.num);
                if (UNEXPECTED(ce == NULL)) {
 -                      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);
 +                      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)) {
                                ZEND_ASSERT(EG(exception));
+                               zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
                                HANDLE_EXCEPTION();
                        }
                        if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
@@@ -34140,9 -34198,10 +34150,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                /* no function found. try a static method in class */
                ce = CACHED_PTR(opline->result.num);
                if (UNEXPECTED(ce == NULL)) {
 -                      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);
 +                      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)) {
                                ZEND_ASSERT(EG(exception));
                                HANDLE_EXCEPTION();
                        }
                        if (IS_UNUSED != IS_CONST) {
@@@ -36071,9 -36040,10 +36082,10 @@@ static ZEND_OPCODE_HANDLER_RET ZEND_FAS
                /* no function found. try a static method in class */
                ce = CACHED_PTR(opline->result.num);
                if (UNEXPECTED(ce == NULL)) {
 -                      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);
 +                      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)) {
                                ZEND_ASSERT(EG(exception));
                                HANDLE_EXCEPTION();
                        }
                        if (IS_CV != IS_CONST) {