}
phar_obj->arc.archive->is_modified = 1;
-/* EXPERIMENT: REMOVING THIS LINE TO SEE THE IMPACT ON VALGRIND RESULTS, WILL BREAK TESTS */
- /* phar_rename_archive(phar_obj->arc.archive, NULL, 1 TSRMLS_CC); */
+ phar_rename_archive(phar_obj->arc.archive, NULL, 1 TSRMLS_CC);
phar_flush(phar_obj->arc.archive, 0, 0, 0, &error TSRMLS_CC);
if (error) {
char *oldname = NULL, *oldpath = NULL;
char *basename = NULL, *basepath = NULL;
char *newname = NULL, *newpath = NULL;
+ dtor_func_t save;
if (phar->flags && compress) {
char *error;
zend_hash_update(&(PHAR_GLOBALS->phar_alias_map), newpath, strlen(newpath), (void*)&phar, sizeof(phar_archive_data*), NULL);
}
+ /* remove old guy, add new guy */
+ save = PHAR_GLOBALS->phar_fname_map.pDestructor;
+ /* don't destruct, we are only renaming */
+ PHAR_GLOBALS->phar_fname_map.pDestructor = NULL;
+ zend_hash_del(&(PHAR_GLOBALS->phar_fname_map), oldpath, phar->fname_len);
+ PHAR_GLOBALS->phar_fname_map.pDestructor = save;
zend_hash_add(&(PHAR_GLOBALS->phar_fname_map), newpath, strlen(newpath), (void*)&phar, sizeof(phar_archive_data*), NULL);
efree(phar->fname);