ID:               27395
 Updated by:       [EMAIL PROTECTED]
 Reported By:      jamesn at tocquigny dot com
-Status:           Assigned
+Status:           Bogus
 Bug Type:         Scripting Engine problem
 Operating System: *
 PHP Version:      4CVS, 5CVS (2004-02-25
 Assigned To:      zeev
 New Comment:

Please do not submit the same bug more than once. An existing
bug report already describes this very problem. Even if you feel
that your issue is somewhat different, the resolution is likely
to be the same. 

Thank you for your interest in PHP.

See bug #20993 (where you seem to have got the example too..)






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

[2004-02-25 13:39:51] [EMAIL PROTECTED]

Wrong test, this was the one:



<?php



function theFunction($arg) {

    $arg[0] = 2;

}



// Reference on array index

$arr1 = array (1);

$reference1 =& $arr1[0];

    

var_dump($reference1);

var_dump($arr1);

theFunction($arr1);

var_dump($reference1);

var_dump($arr1);



echo "--------\n";



// Reference on array

$arr2 = array (1);

$reference2 =& $arr2;

    

var_dump($reference2);

var_dump($arr2);

theFunction($arr2);

var_dump($reference2);

var_dump($arr2);



?>



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

[2004-02-25 12:02:02] jamesn at tocquigny dot com

Description:
------------
There appears to be a problem with php that doesn't allow arrays to be
passed by value.  The fix appears to be something similar to:
http://bugs.php.net/bug.php?id=6417

if (PZVAL_IS_REF(*p))

{

   SEPARATE_ZVAL(p);

} else {

   zval_add_ref(p);

}



It would appear that that logic is missing in one place or another.  I
could not track it down myself.  Code similar to this appears to be
copy/pasted in various places.

Reproduce code:
---------------
$array = array(1);



// This line makes the call to theFunction() act as if passed by ref.?

$reference =& $array[0];



echo $array[0], '<br>';

theFunction($array);



echo $array[0], '<br>';



function theFunction($array) {

    $array[0] = 2;

}

Expected result:
----------------
you should get 1 and 1

Actual result:
--------------
instead you get 1 and 2!


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


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

Reply via email to