]> granicus.if.org Git - php/commitdiff
- MFH: PECL Bug #8700, zipArchive::getFromIndex() fails
authorPierre Joye <pajoye@php.net>
Fri, 15 Sep 2006 12:12:25 +0000 (12:12 +0000)
committerPierre Joye <pajoye@php.net>
Fri, 15 Sep 2006 12:12:25 +0000 (12:12 +0000)
ext/zip/php_zip.c
ext/zip/tests/bug8700.phpt [new file with mode: 0644]

index e684de14178d2b0276ed46f5d661edaee3d2491f..279bac28585508534915618b33ce7621a7729ef8 100644 (file)
@@ -1744,7 +1744,7 @@ static void php_zip_get_from(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */
 
        char *filename;
        int     filename_len;
-       long index;
+       long index = -1;
        long flags = 0;
        long len = 0;
 
@@ -1778,8 +1778,12 @@ static void php_zip_get_from(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */
        if (len < 1) {
                len = sb.size;
        }
+       if (index >= 0) {
+               zf = zip_fopen_index(intern, index, flags);
+       } else {
+               zf = zip_fopen(intern, filename, flags);
+       }
 
-       zf = zip_fopen(intern, filename, flags);
        if (zf == NULL) {
                RETURN_FALSE;
        }
diff --git a/ext/zip/tests/bug8700.phpt b/ext/zip/tests/bug8700.phpt
new file mode 100644 (file)
index 0000000..5e7df45
--- /dev/null
@@ -0,0 +1,30 @@
+--TEST--
+bug #8700, getFromIndex(0) fails
+--SKIPIF--
+<?php
+/* $Id$ */
+if(!extension_loaded('zip')) die('skip');
+?>
+--FILE--
+<?php
+$thisdir = dirname(__FILE__);
+$filename = $thisdir . "/bug8009.zip";
+
+$zip = new ZipArchive();
+
+if ($zip->open($filename) === FALSE) {
+       exit("cannot open $filename\n");
+}
+$contents_from_idx = $zip->getFromIndex(0);
+$contents_from_name = $zip->getFromName('1.txt');
+if ($contents_from_idx != $contents_from_name) {
+       echo "failed:";
+       var_dump($content_from_idx, $content_from_name);
+}
+
+$zip->close();
+echo "status: " . $zip->status . "\n";
+echo "\n";
+
+--EXPECT--
+status: 0