Skip to content

Commit 95fe7d1

Browse files
committed
Reduce unnecessary allocation
1 parent 4f63c10 commit 95fe7d1

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
@@ -2274,20 +2274,21 @@ static bool do_trait_constant_check(
22742274
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) /* {{{ */
22752275
{
22762276
if (do_trait_constant_check(ce, c, name, traits, current_trait)) {
2277-
zend_class_constant *ct;
2277+
zend_class_constant *ct = NULL;
22782278
if (Z_TYPE(c->value) == IS_CONSTANT_AST) {
22792279
ce->ce_flags &= ~ZEND_ACC_CONSTANTS_UPDATED;
22802280
ce->ce_flags |= ZEND_ACC_HAS_AST_CONSTANTS;
22812281
if (traits[current_trait]->ce_flags & ZEND_ACC_IMMUTABLE) {
22822282
ct = zend_arena_alloc(&CG(arena), sizeof(zend_class_constant));
22832283
memcpy(ct, c, sizeof(zend_class_constant));
2284-
c = ct;
2285-
Z_CONSTANT_FLAGS(c->value) |= CONST_OWNED;
2284+
Z_CONSTANT_FLAGS(ct->value) |= CONST_OWNED;
22862285
}
22872286
}
22882287

2289-
ct = emalloc(sizeof(zend_class_constant));
2290-
memcpy(ct, c, sizeof(zend_class_constant));
2288+
if (!ct) {
2289+
ct = emalloc(sizeof(zend_class_constant));
2290+
memcpy(ct, c, sizeof(zend_class_constant));
2291+
}
22912292
c = ct;
22922293

22932294
c->ce = ce;

0 commit comments

Comments
 (0)