1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

phar: Use simpler memory management code in Phar::setAlias()

The phar is CoW'd, so it is non-persistent.
This commit is contained in:
Niels Dossche
2025-10-12 14:57:46 +02:00
parent 8e897f8602
commit e52bf16390

View File

@@ -2748,13 +2748,15 @@ PHP_METHOD(Phar, setAlias)
readd = 1;
}
ZEND_ASSERT(!phar_obj->archive->is_persistent);
oldalias = phar_obj->archive->alias;
oldalias_len = phar_obj->archive->alias_len;
old_temp = phar_obj->archive->is_temporary_alias;
phar_obj->archive->alias_len = ZSTR_LEN(new_alias);
if (phar_obj->archive->alias_len) {
phar_obj->archive->alias = pestrndup(ZSTR_VAL(new_alias), ZSTR_LEN(new_alias), phar_obj->archive->is_persistent);
phar_obj->archive->alias = estrndup(ZSTR_VAL(new_alias), ZSTR_LEN(new_alias));
} else {
phar_obj->archive->alias = NULL;
}
@@ -2763,7 +2765,7 @@ PHP_METHOD(Phar, setAlias)
phar_flush(phar_obj->archive, &error);
if (error) {
pefree(phar_obj->archive->alias, phar_obj->archive->is_persistent);
efree(phar_obj->archive->alias);
phar_obj->archive->alias = oldalias;
phar_obj->archive->alias_len = oldalias_len;
phar_obj->archive->is_temporary_alias = old_temp;