ID:               19943
 Updated by:       [EMAIL PROTECTED]
 Reported By:      su-php at bossi dot com
-Status:           Analyzed
+Status:           Verified
 Bug Type:         Scripting Engine problem
 Operating System: Win2K
-PHP Version:      4.3.0-dev
+PHP Version:      4.3.2-dev
 New Comment:

Memleak still present in 4.3.2-dev.



Previous Comments:
------------------------------------------------------------------------

[2002-11-05 13:40:16] [EMAIL PROTECTED]

The reported behaviour itself is not a bug
(see http://lists.php.net/article.php?group=php.dev&article=90522 for
detail), but the memory leaks imply another bug. So I decided to
reclassify this as Scripting Engine problem, and change the status to
"Analyzed".

Anyway thank you for the bug report!

--
Moriyoshi


------------------------------------------------------------------------

[2002-10-30 07:30:05] Ppslim at ntlworld dot com

I think this is pretty much invalid.

[EMAIL PROTECTED] posted 2 examples. Only 1 is correct, or infact, valid
code.

In the first example, you have the following 2 array assignments.

$ragged[$count]        = 'single '.$count;
$ragged[$count]['idx'] = 'ragged '.$count;

In this, you assign a string to $ragged[$count], then, you turn it into
an array using $regged[$count]['idx'].

This is invlaid in most languages.

In the $ragged[$count], $ragged['idx'][$count] method, no type changes
are taking place.

------------------------------------------------------------------------

[2002-10-16 22:51:14] [EMAIL PROTECTED]

A pretty interesting bug this is, there appear to be 2 possible
behaviours that can happen here and only 1 is correct.
<?php

$ar = array();
for ( $count = 0; $count < 10; $count++ )
{
        $ar[$count]        = "$count";
        $ar[$count]['idx'] = "$count";
}

for ( $count = 0; $count < 10; $count++ )
{
        echo $ar[$count]." -- ".$ar[$count]['idx']."\n";
}
?>

The code above will output:
t 0 -- t
t 1 -- t
t 2 -- t
t 3 -- t
t 4 -- t
t 5 -- t
t 6 -- t
t 7 -- t
t 8 -- t
t 9 -- t
/home/rei/PHP_CVS/php4/Zend/zend_operators.c(1008) :  Freeing
0x08369384 (6 bytes), script=a.php
Last leak repeated 9 times

If the " around the $count variable are removed then the script
reports:
Warning: Cannot use a scalar value as an array in
/home/rei/PHP_CVS/php4/a.php on line 7
/home/rei/PHP_CVS/php4/a.php(7) : Warning - Cannot use a scalar value
as an array

for every assignment and does no initialize any of the
$ar[$count]['idx'] values.

------------------------------------------------------------------------

[2002-10-16 19:54:16] su-php at bossi dot com

However, the following codes does work, even though the array is still
ragged:
<?
$ragged = array();
for ( $count = 0; $count < 10; $count++ )
{
        $ragged['idx'][$count] = 'ragged '.$count;
        $ragged[$count]        = 'single '.$count;
}
?>
<html><head></head><body>
<table border="1">
<tr>
        <td>Expected</td><td>Actual</td>
        <td>Expected IDX</td><td>Actual IDX</td>
</tr>
<?
for ( $count = 0; $count < 10; $count++ )
{
?>
<tr>
        <td> <?= 'single '.$count ?> </td><td> <?= $ragged[$count] ?> </td>
        <td> <?= 'ragged '.$count ?> </td><td> <?= $ragged['idx'][$count] ?>
</td>
</tr>
<? } ?>
</table></body></html>

------------------------------------------------------------------------

[2002-10-16 19:50:57] su-php at bossi dot com

When using an array that has ragged indices, the value in the array is
undefined. Well, actually it can be defined, but it is unexpected. No
errors or warnings are reported. Sample Code:

<?
$ragged = array();
for ( $count = 0; $count < 10; $count++ )
{
        $ragged[$count]        = 'single '.$count;
        $ragged[$count]['idx'] = 'ragged '.$count;
}
?>
<html><head></head><body>
<table border="1">
<tr>
        <td>Expected</td><td>Actual</td>
        <td>Expected IDX</td><td>Actual IDX</td>
</tr>
<?
for ( $count = 0; $count < 10; $count++ )
{
?>
<tr>
        <td> <?= 'single '.$count ?> </td><td> <?= $ragged[$count] ?> </td>
        <td> <?= 'ragged '.$count ?> </td><td> <?= $ragged[$count]['idx'] ?>
</td>
</tr>
<? } ?>
</table></body></html>


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=19943&edit=1

Reply via email to