]> granicus.if.org Git - php/commitdiff
Add missing addref for MATCH_ERROR operand
authorNikita Popov <nikita.ppv@gmail.com>
Fri, 10 Jul 2020 13:58:04 +0000 (15:58 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 10 Jul 2020 13:58:42 +0000 (15:58 +0200)
Zend/zend_compile.c

index b2a33068f53e2040f4492143282aeed58a6df925..1e2dfb5a4dc1e2791e6f6e83d3c69e6c15c36167 100644 (file)
@@ -5368,7 +5368,10 @@ void zend_compile_match(znode *result, zend_ast *ast)
                        opline->extended_value = get_next_op_number();
                }
 
-               zend_emit_op(NULL, ZEND_MATCH_ERROR, &expr_node, NULL);
+               zend_op *opline = zend_emit_op(NULL, ZEND_MATCH_ERROR, &expr_node, NULL);
+               if (opline->op1_type == IS_CONST) {
+                       Z_TRY_ADDREF_P(CT_CONSTANT(opline->op1));
+               }
        }
 
        for (uint32_t i = 0; i < arms->children; ++i) {