]> granicus.if.org Git - php/commitdiff
simplify phar_get_link_location and increase its coverage to 100%
authorGreg Beaver <cellog@php.net>
Sun, 11 May 2008 23:03:56 +0000 (23:03 +0000)
committerGreg Beaver <cellog@php.net>
Sun, 11 May 2008 23:03:56 +0000 (23:03 +0000)
ext/phar/tests/tar/files/tinylink.tar [new file with mode: 0644]
ext/phar/tests/tar/links4.phpt [new file with mode: 0644]
ext/phar/util.c

diff --git a/ext/phar/tests/tar/files/tinylink.tar b/ext/phar/tests/tar/files/tinylink.tar
new file mode 100644 (file)
index 0000000..741b56c
Binary files /dev/null and b/ext/phar/tests/tar/files/tinylink.tar differ
diff --git a/ext/phar/tests/tar/links4.phpt b/ext/phar/tests/tar/links4.phpt
new file mode 100644 (file)
index 0000000..d0783e8
--- /dev/null
@@ -0,0 +1,19 @@
+--TEST--
+Phar: tar with link to root directory file from root directory file
+--SKIPIF--
+<?php if (!extension_loaded("phar")) die("skip"); ?>
+--FILE--
+<?php
+try {
+       $p = new PharData(dirname(__FILE__) . '/files/tinylink.tar');
+} catch (Exception $e) {
+       echo $e->getMessage() . "\n";
+}
+echo $p['file.txt']->getContent();
+echo $p['link.txt']->getContent();
+?>
+===DONE===
+--EXPECT--
+hi
+hi
+===DONE===
index 09258b1f96bc3e518fc2debb2db2063e2a98ef45..0add3b913e13de3c4bf5505e4d5e8e2618bdf7ff 100644 (file)
@@ -28,22 +28,19 @@ extern php_stream_wrapper php_stream_phar_wrapper;
 /* for links to relative location, prepend cwd of the entry */
 static char *phar_get_link_location(phar_entry_info *entry TSRMLS_DC)
 {
-       char *tmp, *p, *ret = NULL;
+       char *p, *ret = NULL;
        if (!entry->link) {
                return NULL;
        }
        if (entry->link[0] == '/') {
                return estrdup(entry->link + 1);
        }
-       tmp = estrndup(entry->filename, entry->filename_len);
-       p = strrchr(tmp, '/');
+       p = strrchr(entry->filename, '/');
        if (p) {
                *p = '\0';
-               spprintf(&ret, 0, "%s/%s", tmp, entry->link);
-               efree(tmp);
+               spprintf(&ret, 0, "%s/%s", entry->filename, entry->link);
                return ret;
        }
-       efree(ret);
        return entry->link;
 }