From: Campo W. <rf...@nl...> - 2002-02-05 10:24:41
|
Hi all, First off, let me tell you I'm having lots of fun with phpWiki since last summer. This is a great tool, and I find myself using it all the time, both at home and at work. However, I think I have hit a bug in the ziplib. When unloading my 1.2.2 wiki (DBA based) to a ZIP file, it creates corrupt zip files. On closer examination, it turns out that some PHP error messages get written to the ZIP verbatim. Here is an example: (page content omitted...)^M <br /> <b>Warning</b>: Variable passed to reset() is not an array or object in <b>/usr/local/cgi/dbmwiki/lib/ziplib.php</b> on line <b>533</b><br /> <br /> <b>Warning</b>: Variable passed to each() is not an array or object in <b>/usr/local/cgi/dbmwiki/lib/ziplib.php</b> on line <b>534</b><br /> PK^C^D^T^@ (header of next file follows...) This happens on 3 out of 296 pages. Needless to say the resulting ZIP can't be correctly read. Looking at these messages I figured it might be caused by empty pages, so I tried this patch, which seems to solve the problem. --- ./ziplib.php_orig Wed Nov 7 21:32:24 2001 +++ ./ziplib.php Tue Feb 5 11:17:12 2002 @@ -529,10 +529,15 @@ $out = MimeContentTypeHeader('application', 'x-phpwiki', $params); $out .= "Content-Transfer-Encoding: quoted-printable\r\n"; $out .= "\r\n"; - - reset($content); - while (list($junk, $line) = each($content)) - $out .= QuotedPrintableEncode(chop($line)) . "\r\n"; + + if (is_array($content)) { + reset($content); + while (list($junk, $line) = each($content)) + $out .= QuotedPrintableEncode(chop($line)) . "\r\n"; + } + elseif (is_string($content)) { + $out .= QuotedPrintableEncode(chop($content)) . "\r\n"; + } return $out; } Note that I'm not a PHP programmer, and I really don't know whether the is_string() part makes any sense here. Regards, -- $_ = "Campo Weijerman [rfc822://nl.ibm.com/]" and tr-[:]/-<@>-d and print; |