}
php_stream_close(fp);
zend_hash_destroy(&myphar->manifest);
+ myphar->manifest.arBuckets = 0;
efree(myphar);
return FAILURE;
}
}
php_stream_close(fp);
zend_hash_destroy(&myphar->manifest);
+ myphar->manifest.arBuckets = 0;
efree(myphar);
return FAILURE;
}
strcpy(name, hdr->prefix);
strcat(name, hdr->name);
entry.filename_len = strlen(name);
+ if (name[entry.filename_len - 1] == '/') {
+ /* some tar programs store directories with trailing slash */
+ entry.filename_len--;
+ }
entry.filename = estrndup(name, entry.filename_len);
} else {
entry.filename = estrdup(hdr->name);
entry.filename_len = strlen(entry.filename);
+ if (entry.filename[entry.filename_len - 1] == '/') {
+ /* some tar programs store directories with trailing slash */
+ entry.filename[entry.filename_len - 1] = '\0';
+ entry.filename_len--;
+ }
}
entry.tar_type = ((old & (hdr->typeflag == 0))?'0':hdr->typeflag);
}
php_stream_close(fp);
zend_hash_destroy(&myphar->manifest);
+ myphar->manifest.arBuckets = 0;
efree(myphar);
return FAILURE;
}
}
php_stream_close(fp);
zend_hash_destroy(&myphar->manifest);
+ myphar->manifest.arBuckets = 0;
efree(myphar);
return FAILURE;
}
}
php_stream_close(fp);
zend_hash_destroy(&myphar->manifest);
+ myphar->manifest.arBuckets = 0;
efree(myphar);
return FAILURE;
}
entry->is_modified = 0;
if (entry->fp_type == PHAR_MOD && entry->fp != entry->phar->fp && entry->fp != entry->phar->ufp) {
- php_stream_close(entry->fp);
+ if (!entry->fp_refcount) {
+ php_stream_close(entry->fp);
+ }
entry->fp = NULL;
}
entry->fp_type = PHAR_FP;