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

Reply via email to