Skip to content

Commit 5d3f66e

Browse files
committed
Reduce unnecessary allocation
1 parent 166175b commit 5d3f66e

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

Zend/zend_inheritance.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2205,20 +2205,21 @@ static bool do_trait_constant_check(
22052205
static void do_inherit_trait_constant(zend_string *name, zend_class_constant *c, zend_class_entry *ce, zend_class_entry **traits, size_t current_trait) /* {{{ */
22062206
{
22072207
if (do_trait_constant_check(ce, c, name, traits, current_trait)) {
2208-
zend_class_constant *ct;
2208+
zend_class_constant *ct = NULL;
22092209
if (Z_TYPE(c->value) == IS_CONSTANT_AST) {
22102210
ce->ce_flags &= ~ZEND_ACC_CONSTANTS_UPDATED;
22112211
ce->ce_flags |= ZEND_ACC_HAS_AST_CONSTANTS;
22122212
if (traits[current_trait]->ce_flags & ZEND_ACC_IMMUTABLE) {
22132213
ct = zend_arena_alloc(&CG(arena), sizeof(zend_class_constant));
22142214
memcpy(ct, c, sizeof(zend_class_constant));
2215-
c = ct;
2216-
Z_CONSTANT_FLAGS(c->value) |= CONST_OWNED;
2215+
Z_CONSTANT_FLAGS(ct->value) |= CONST_OWNED;
22172216
}
22182217
}
22192218

2220-
ct = emalloc(sizeof(zend_class_constant));
2221-
memcpy(ct, c, sizeof(zend_class_constant));
2219+
if (!ct) {
2220+
ct = emalloc(sizeof(zend_class_constant));
2221+
memcpy(ct, c, sizeof(zend_class_constant));
2222+
}
22222223
c = ct;
22232224

22242225
c->ce = ce;

0 commit comments

Comments
 (0)