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