Skip to content

Commit e52bf16

Browse files
committed
phar: Use simpler memory management code in Phar::setAlias()
The phar is CoW'd, so it is non-persistent.
1 parent 8e897f8 commit e52bf16

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

ext/phar/phar_object.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2748,13 +2748,15 @@ PHP_METHOD(Phar, setAlias)
27482748
readd = 1;
27492749
}
27502750

2751+
ZEND_ASSERT(!phar_obj->archive->is_persistent);
2752+
27512753
oldalias = phar_obj->archive->alias;
27522754
oldalias_len = phar_obj->archive->alias_len;
27532755
old_temp = phar_obj->archive->is_temporary_alias;
27542756

27552757
phar_obj->archive->alias_len = ZSTR_LEN(new_alias);
27562758
if (phar_obj->archive->alias_len) {
2757-
phar_obj->archive->alias = pestrndup(ZSTR_VAL(new_alias), ZSTR_LEN(new_alias), phar_obj->archive->is_persistent);
2759+
phar_obj->archive->alias = estrndup(ZSTR_VAL(new_alias), ZSTR_LEN(new_alias));
27582760
} else {
27592761
phar_obj->archive->alias = NULL;
27602762
}
@@ -2763,7 +2765,7 @@ PHP_METHOD(Phar, setAlias)
27632765
phar_flush(phar_obj->archive, &error);
27642766

27652767
if (error) {
2766-
pefree(phar_obj->archive->alias, phar_obj->archive->is_persistent);
2768+
efree(phar_obj->archive->alias);
27672769
phar_obj->archive->alias = oldalias;
27682770
phar_obj->archive->alias_len = oldalias_len;
27692771
phar_obj->archive->is_temporary_alias = old_temp;

0 commit comments

Comments
 (0)