From adfdd01372cce9efe22d816dbd4eb2ab66862ab0 Mon Sep 17 00:00:00 2001 From: Stefan Marr Date: Mon, 15 Aug 2011 08:29:48 +0000 Subject: [PATCH] Addendum for patch to bug #55214: Class name was freed before method literal referring to it. # Thanks to Felipe for catching this. # The fix duplicates the name into the literal to avoid the dependency --- Zend/zend_compile.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 96fd936ace..6fdd4a6d3e 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -3544,7 +3544,7 @@ static void zend_traits_duplicate_function(zend_function *fe, zend_class_entry * /* Only on merge into an actual class */ && (ZEND_ACC_TRAIT != (target_ce->ce_flags & ZEND_ACC_TRAIT))) { INIT_ZVAL(class_name_zv); - ZVAL_STRINGL(&class_name_zv, target_ce->name, target_ce->name_length, 0); + ZVAL_STRINGL(&class_name_zv, target_ce->name, target_ce->name_length, 1); class_name_literal = zend_add_literal(&fe->op_array, &class_name_zv TSRMLS_CC); opcode_copy[i].op1.zv = &fe->op_array.literals[class_name_literal].constant; } @@ -3564,7 +3564,7 @@ static void zend_traits_duplicate_function(zend_function *fe, zend_class_entry * /* Only on merge into an actual class */ && (ZEND_ACC_TRAIT != (target_ce->ce_flags & ZEND_ACC_TRAIT))) { INIT_ZVAL(class_name_zv); - ZVAL_STRINGL(&class_name_zv, target_ce->name, target_ce->name_length, 0); + ZVAL_STRINGL(&class_name_zv, target_ce->name, target_ce->name_length, 1); class_name_literal = zend_add_literal(&fe->op_array, &class_name_zv TSRMLS_CC); opcode_copy[i].op2.zv = &fe->op_array.literals[class_name_literal].constant; } -- 2.40.0