char *error;
const char *pcr_error;
int ext_len = ext ? strlen(ext) : 0;
+ phar_archive_data **pphar;
if (!ext) {
if (phar->is_zip) {
efree(basepath);
efree(newname);
- if (zend_hash_exists(&(PHAR_GLOBALS->phar_fname_map), newpath, phar->fname_len)) {
+ if (SUCCESS == zend_hash_find(&(PHAR_GLOBALS->phar_fname_map), newpath, phar->fname_len, (void **) &pphar)) {
+ if (*pphar == phar) {
+ if (!zend_hash_num_elements(&phar->manifest)) {
+ goto its_ok;
+ }
+ }
efree(oldpath);
zend_throw_exception_ex(spl_ce_BadMethodCallException, 0 TSRMLS_CC, "Unable to add newly converted phar \"%s\" to the list of phars, a phar with that name already exists", phar->fname);
return NULL;
}
+its_ok:
if (!phar->is_data) {
if (SUCCESS != phar_detect_phar_fname_ext(newpath, phar->fname_len, (const char **) &(phar->ext), &(phar->ext_len), 1, 1, 1 TSRMLS_CC)) {
efree(oldpath);