I agree with you that this bug may not be critical, I am not certain why it 
was marked as such, however I do believe this is a bug that should be fixed.
If my understand of the situation is correct, the memory leak is the result of 
original $ragged[$count] = "$count"; expression. At this point ZE creates a 
ZVAL that contains a 2 byte string value, number + \0.
When $ragged[$count]['idx'] = 'ragged '.$count; is executed, the original zval 
containing a string is converted to an array. During this conversion the 
string value is not freed and the result is a memory leak.

Ilia

On November 5, 2002 01:45 pm, Moriyoshi Koizumi wrote:
> This appears not a bug, but an expected behaviour for me.
> Let's change it from "Critial" to "Won't Fix" or so on.
>
> ---------------------------------------------------------------
> <?php
> $ragged = array();
> for ($count = 0; $count < 10; $count++) {
>     $ragged[$count] = "$count";
>     $ragged[$count]['idx'] = "$count";
> }
> for ($count = 0; $count < 10; $count++) {
>     printf("single %d: %s\n", $count, $ragged[$count]);
>     printf("ragged %d: %s\n", $count, $ragged[$count]['idx']);
> }
> ?>
> ---------------------------------------------------------------
>
> The above snippet is actually a variant of the following code:
> ---------------------------------------------------------------
> <?php
> $ragged = array();
> for ($count = 0; $count < 10; $count++) {
>     $ragged[$count] = (string)$count;
>     $ragged[$count]{(int)'idx'} = (string)$count;
> }
> for ($count = 0; $count < 10; $count++) {
>     printf("single %d: %s\n", $count, $ragged[$count]);
>     printf("ragged %d: %s\n", $count, $ragged[$count]{(int)'idx'});
> }
> ?>
> ---------------------------------------------------------------
> Then, "Cannot use a scalar value as an array" warnings are due to
> applications of braces for non-string variables.
> But I can't still explain why leaks occured.
>
> Moriyoshi


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to