If you've spotted a behaviour change, open a new bug with a short
self-contained reproducing script. I suspect some kind of engine bug
here, because what you've described doesn't make sense :)
That warning about the length comes from this code in the fread function:
len = Z_LVAL_PP(arg2);
if (len <= 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Length parameter
must be greater than 0");
RETURN_FALSE;
}
So either you are passing in something that evaluates as 0 (or less),
or something is corrupting memory and breaking the length value by the
time it reaches fread().
I'd recommend running your script under valgrind
(--disable-memory-manager when you configure PHP) and see if it
reports anything bad.
--Wez.
On 7/22/05, Greg Beaver <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I have noticed that fread()'s behavior has changed between PHP 5.0.4 and
> PHP 5.1.0b3. Basically, http://pear.chiaraquartet.net/go-pear.phar
> works in PHP 5.0.4 and fails in 5.1.0b3 because of this change. The
> line in question of the .phar from PHP_Archive is:
>
> fread($this->_file, $this->internalFileLength +
> $this->footerLength);
>
> Basically, a .phar is a .tar. For files inside the .phar larger than
> 16000 bytes, the fread above fails with the incorrect error message:
>
> PHP Warning: fread(): Length parameter must be greater than 0 in
> c:\php5\pear\PHP\Archive.php on line 193
>
> Note that the failure is OS-independent.
>
> However, the actual length parameter is 21,155, which is not less than
> zero, unless you consider it to be a negative number in binary. After
> the fread in PHP 5.0.4, ftell() reveals that the pointer has advanced to
> 22016, whereas in 5.1.0b3, it has only advanced to 16384.
>
> According to the notes in http://bugs.php.net/bug.php?id=30936 this
> should work with a local file, so should I re-open 30936, or is this a
> new bug?
>
> Greg
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php