summaryrefslogtreecommitdiff
path: root/ext/phar/phar.c
diff options
context:
space:
mode:
authorSteph Fox <sfox@php.net>2008-05-24 14:18:31 +0000
committerSteph Fox <sfox@php.net>2008-05-24 14:18:31 +0000
commit76a9ec377b1878993daf5e116b32d256cc11f54d (patch)
tree48a3e4b5f352c4e5356e65638eb7a0907aedc1ab /ext/phar/phar.c
parent7efb792fe829b31fd62d539b4544078f95a6b7d7 (diff)
downloadphp-git-76a9ec377b1878993daf5e116b32d256cc11f54d.tar.gz
- MFB major fixes
* found felipe's segfault in util.c and fixed the segfault (3 tests fail due to odd behavior of . and .. on this machine) * fixed serious flaws in the setting/resetting of is_data - now it works properly. Assume all new PharData are tar-based, and allow passing Phar::ZIP to PharData constructor to override this * fix broken earlier commit, introduced segfault that broke 20 tests here
Diffstat (limited to 'ext/phar/phar.c')
-rw-r--r--ext/phar/phar.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/ext/phar/phar.c b/ext/phar/phar.c
index f432c06926..0b595a9c8f 100644
--- a/ext/phar/phar.c
+++ b/ext/phar/phar.c
@@ -406,7 +406,6 @@ int phar_open_loaded(char *fname, int fname_len, char *alias, int alias_len, int
}
}
}
- phar->is_data = is_data && (phar->is_tar || phar->is_zip);
if (pphar) {
*pphar = phar;
}
@@ -1033,12 +1032,12 @@ check_file:
}
if (ext_len > 3 && (z = memchr(ext_str, 'z', ext_len)) && ((ext_str + ext_len) - z >= 2) && !memcmp(z + 1, "ip", 2)) {
- // assume zip-based phar
+ /* assume zip-based phar */
return phar_open_or_create_zip(fname, fname_len, alias, alias_len, is_data, options, pphar, error TSRMLS_CC);
}
if (ext_len > 3 && (z = memchr(ext_str, 't', ext_len)) && ((ext_str + ext_len) - z >= 2) && !memcmp(z + 1, "ar", 2)) {
- // assume tar-based phar
+ /* assume tar-based phar */
return phar_open_or_create_tar(fname, fname_len, alias, alias_len, is_data, options, pphar, error TSRMLS_CC);
}
@@ -1140,6 +1139,9 @@ int phar_create_or_parse_filename(char *fname, int fname_len, char *alias, int a
if (is_data) {
alias = NULL;
alias_len = 0;
+ mydata->is_data = 1;
+ /* assume tar format, PharData can specify other */
+ mydata->is_tar = 1;
} else {
phar_archive_data **fd_ptr;