]> granicus.if.org Git - php/commitdiff
fix convertTo\*() for same-named archives with no files
authorGreg Beaver <cellog@php.net>
Wed, 21 May 2008 20:24:40 +0000 (20:24 +0000)
committerGreg Beaver <cellog@php.net>
Wed, 21 May 2008 20:24:40 +0000 (20:24 +0000)
ext/phar/phar_object.c

index 9c3f52434de990d18aeee04c88233e4318bfd9c8..cc0156fb1c9bb0337e344e8193f9810a3f95c8a7 100755 (executable)
@@ -1891,7 +1891,7 @@ static zval *phar_rename_archive(phar_archive_data *phar, char *ext, zend_bool c
        efree(newname);
 
        if (SUCCESS == zend_hash_find(&(PHAR_GLOBALS->phar_fname_map), newpath, phar->fname_len, (void **) &pphar)) {
-               if (*pphar == phar) {
+               if ((*pphar)->fname_len == phar->fname_len && !memcmp((*pphar)->fname, phar->fname, phar->fname_len)) {
                        if (!zend_hash_num_elements(&phar->manifest)) {
                                goto its_ok;
                        }
@@ -1929,7 +1929,7 @@ its_ok:
                phar->alias_len = 0;
        }
 
-       if (SUCCESS != zend_hash_add(&(PHAR_GLOBALS->phar_fname_map), newpath, phar->fname_len, (void*)&phar, sizeof(phar_archive_data*), NULL)) {
+       if (SUCCESS != zend_hash_update(&(PHAR_GLOBALS->phar_fname_map), newpath, phar->fname_len, (void*)&phar, sizeof(phar_archive_data*), NULL)) {
                efree(oldpath);
                zend_throw_exception_ex(spl_ce_BadMethodCallException, 0 TSRMLS_CC, "Unable to add newly converted phar \"%s\" to the list of phars", phar->fname);
                return NULL;