From:             cpriest at warpmail dot net
Operating system: Apache 2.0.55
PHP version:      5.1.6
PHP Bug Type:     Arrays related
Bug description:  Temporary tables with references dereference

Description:
------------
References in temporary tables de-reference their references upon crossing
function boundaries

Reproduce code:
---------------
<?php
  class myClassA {
          public $Name = '';
          function __construct($Name) { $this->Name = $Name;  }
  }
  
  global $tblData;
  
  $tblData = array(
        'Test'  =>      new myClassA('Object 1'),
        'Test2' =>      new myClassA('Object 2'),
  );
  
  function getReferenced() {
          global $tblData;
          
          $tblData2 = array(
                'Test'  =>      &$tblData['Test'],
                'Test2' =>      &$tblData['Test2'],
          );
          return $tblData2;
  }
  
  echo '<plaintext>';
  
  print_r($tblData);
  
  $tblData2 = getReferenced();
  $tblData2['Test']->Name = 'Object 3';
  print_r($tblData2);
?>

Expected result:
----------------
I expect there to be only two objects at the end of the call, one with a
Name of 'Object 3' and one with a Name of 'Object 2'

Actual result:
--------------
Three objects exist, 'Object 1', 'Object 2', and 'Object 3'

-- 
Edit bug report at http://bugs.php.net/?id=39202&edit=1
-- 
Try a CVS snapshot (PHP 4.4): 
http://bugs.php.net/fix.php?id=39202&r=trysnapshot44
Try a CVS snapshot (PHP 5.2): 
http://bugs.php.net/fix.php?id=39202&r=trysnapshot52
Try a CVS snapshot (PHP 6.0): 
http://bugs.php.net/fix.php?id=39202&r=trysnapshot60
Fixed in CVS:                 http://bugs.php.net/fix.php?id=39202&r=fixedcvs
Fixed in release:             
http://bugs.php.net/fix.php?id=39202&r=alreadyfixed
Need backtrace:               http://bugs.php.net/fix.php?id=39202&r=needtrace
Need Reproduce Script:        http://bugs.php.net/fix.php?id=39202&r=needscript
Try newer version:            http://bugs.php.net/fix.php?id=39202&r=oldversion
Not developer issue:          http://bugs.php.net/fix.php?id=39202&r=support
Expected behavior:            http://bugs.php.net/fix.php?id=39202&r=notwrong
Not enough info:              
http://bugs.php.net/fix.php?id=39202&r=notenoughinfo
Submitted twice:              
http://bugs.php.net/fix.php?id=39202&r=submittedtwice
register_globals:             http://bugs.php.net/fix.php?id=39202&r=globals
PHP 3 support discontinued:   http://bugs.php.net/fix.php?id=39202&r=php3
Daylight Savings:             http://bugs.php.net/fix.php?id=39202&r=dst
IIS Stability:                http://bugs.php.net/fix.php?id=39202&r=isapi
Install GNU Sed:              http://bugs.php.net/fix.php?id=39202&r=gnused
Floating point limitations:   http://bugs.php.net/fix.php?id=39202&r=float
No Zend Extensions:           http://bugs.php.net/fix.php?id=39202&r=nozend
MySQL Configuration Error:    http://bugs.php.net/fix.php?id=39202&r=mysqlcfg

Reply via email to