int i;
off_t len;
+ if (flags & ZIP_OVERWRITE) {
+ return _zip_allocate_new(fn, zep);
+ }
switch (_zip_file_exists(fn, flags, zep)) {
case -1:
--- /dev/null
+--TEST--
+Bug #47667 (ZipArchive::OVERWRITE seems to have no effect)
+--SKIPIF--
+<?php
+/* $Id$ */
+if(!extension_loaded('zip')) die('skip');
+?>
+--FILE--
+<?php
+$thisdir = dirname(__FILE__);
+$filename = $thisdir . "/bug47667.zip";
+
+$zip = new ZipArchive();
+if ($zip->open($filename, ZipArchive::CREATE) !== true) {
+ exit("Unable to open the zip file");
+} else {
+ $zip->addFromString('foo.txt', 'foo bar foobar');
+ $zip->close();
+}
+
+for ($i = 0; $i < 10; $i++) {
+ $zip = new ZipArchive();
+ if ($zip->open($filename, ZipArchive::OVERWRITE) !== true) {
+ exit("Unable to open the zip file");
+ }
+ $zip->addFromString("foo_{$i}.txt", 'foo bar foobar');
+ $zip->close();
+}
+
+$zip = new ZipArchive();
+if ($zip->open($filename, ZipArchive::CREATE) !== true) {
+ exit("Unable to open the zip file");
+}
+
+echo "files: " , $zip->numFiles;
+
+unlink($filename);
+
+--EXPECT--
+files: 1