tony2001                Wed Jun 27 12:17:30 2007 UTC

  Added files:                 
    /php-src/ext/spl/tests      bug41692.phpt 

  Modified files:              
    /php-src/ext/spl    spl_array.c 
  Log:
  fix #41692 (ArrayObject shows weird behaviour in respect to inheritance)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_array.c?r1=1.125&r2=1.126&diff_format=u
Index: php-src/ext/spl/spl_array.c
diff -u php-src/ext/spl/spl_array.c:1.125 php-src/ext/spl/spl_array.c:1.126
--- php-src/ext/spl/spl_array.c:1.125   Fri Apr  6 21:15:44 2007
+++ php-src/ext/spl/spl_array.c Wed Jun 27 12:17:29 2007
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: spl_array.c,v 1.125 2007/04/06 21:15:44 helly Exp $ */
+/* $Id: spl_array.c,v 1.126 2007/06/27 12:17:29 tony2001 Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -942,7 +942,7 @@
 
        intern = (spl_array_object*)zend_object_store_get_object(object 
TSRMLS_CC);
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|lC", &array, 
&ar_flags, &ce_get_iterator) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z/|lC", &array, 
&ar_flags, &ce_get_iterator) == FAILURE) {
                php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);
                return;
        }

http://cvs.php.net/viewvc.cgi/php-src/ext/spl/tests/bug41692.phpt?view=markup&rev=1.1
Index: php-src/ext/spl/tests/bug41692.phpt
+++ php-src/ext/spl/tests/bug41692.phpt
--TEST--
Bug #41692 (ArrayObject shows weird behaviour in respect to inheritance)
--FILE--
<?php

class Bar extends ArrayObject {
    private $foo = array( 1, 2, 3 );
    function __construct()
    {
        parent::__construct($this->foo);
    }
}

$foo = new Bar();
var_dump($foo);
$foo['foo'] = 23;

$bar = new Bar();
var_dump($bar);

echo "Done\n";
?>
--EXPECTF--     
object(Bar)#%d (2) {
  ["foo":"Bar":private]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(3)
  }
  ["storage":"ArrayObject":private]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(3)
  }
}
object(Bar)#%d (2) {
  ["foo":"Bar":private]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(3)
  }
  ["storage":"ArrayObject":private]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(3)
  }
}
Done
--UEXPECTF--
object(Bar)#%d (2) {
  [u"foo":u"Bar":private]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(3)
  }
  [u"storage":u"ArrayObject":private]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(3)
  }
}
object(Bar)#%d (2) {
  [u"foo":u"Bar":private]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(3)
  }
  [u"storage":u"ArrayObject":private]=>
  array(3) {
    [0]=>
    int(1)
    [1]=>
    int(2)
    [2]=>
    int(3)
  }
}
Done

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to