helly           Thu Feb 12 15:52:49 2004 EDT

  Modified files:              
    /php-src/ext/spl/tests      array_object.phpt 
    /php-src/ext/spl    spl_array.c 
  Log:
  Fix ArrayObject
  
http://cvs.php.net/diff.php/php-src/ext/spl/tests/array_object.phpt?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/spl/tests/array_object.phpt
diff -u php-src/ext/spl/tests/array_object.phpt:1.1 
php-src/ext/spl/tests/array_object.phpt:1.2
--- php-src/ext/spl/tests/array_object.phpt:1.1 Wed Nov 26 18:28:35 2003
+++ php-src/ext/spl/tests/array_object.phpt     Thu Feb 12 15:52:46 2004
@@ -30,8 +30,9 @@
 unset($ar["c"]);
 var_dump($ar);
 
-echo "Done\n";
 ?>
+===DONE===
+<?php exit(0); ?>
 --EXPECTF--
 object(ArrayObject)#1 (2) {
   [0]=>
@@ -47,9 +48,9 @@
   [1]=>
   int(1)
   [2]=>
-  &int(2)
+  int(2)
   [3]=>
-  &int(3)
+  int(3)
   [4]=>
   int(4)
   [5]=>
@@ -62,11 +63,11 @@
   [1]=>
   int(1)
   [2]=>
-  &int(2)
+  int(2)
   [3]=>
-  &int(3)
+  int(3)
   ["a"]=>
-  &string(1) "a"
+  string(1) "a"
 }
 int(0)
 
@@ -83,6 +84,6 @@
   [0]=>
   int(0)
   [2]=>
-  &int(2)
+  int(2)
 }
-Done
+===DONE===
http://cvs.php.net/diff.php/php-src/ext/spl/spl_array.c?r1=1.31&r2=1.32&ty=u
Index: php-src/ext/spl/spl_array.c
diff -u php-src/ext/spl/spl_array.c:1.31 php-src/ext/spl/spl_array.c:1.32
--- php-src/ext/spl/spl_array.c:1.31    Wed Feb  4 07:45:47 2004
+++ php-src/ext/spl/spl_array.c Thu Feb 12 15:52:48 2004
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: spl_array.c,v 1.31 2004/02/04 12:45:47 zeev Exp $ */
+/* $Id: spl_array.c,v 1.32 2004/02/12 20:52:48 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -152,7 +152,7 @@
 /* }}} */
 
 /* {{{ spl_array_read_dimension */
-static zval *spl_array_read_dimension(zval *object, zval *offset TSRMLS_DC)
+static zval *spl_array_read_dimension(zval *object, zval *offset, int type TSRMLS_DC)
 {
        spl_array_object *intern = 
(spl_array_object*)zend_object_store_get_object(object TSRMLS_CC);
        zval **retval;
@@ -161,9 +161,10 @@
        switch(Z_TYPE_P(offset)) {
        case IS_STRING:
                if (zend_symtable_find(HASH_OF(intern->array), Z_STRVAL_P(offset), 
Z_STRLEN_P(offset)+1, (void **) &retval) == FAILURE) {
-                       zend_error(E_NOTICE,"Undefined index:  %s", 
Z_STRVAL_P(offset));
+                       zend_error(E_NOTICE, "Undefined index:  %s", 
Z_STRVAL_P(offset));
                        return EG(uninitialized_zval_ptr);
                } else {
+                       (*retval)->refcount++;
                        return *retval;
                }
        case IS_DOUBLE:
@@ -176,7 +177,7 @@
                        index = Z_LVAL_P(offset);
                }
                if (zend_hash_index_find(HASH_OF(intern->array), index, (void **) 
&retval) == FAILURE) {
-                       zend_error(E_NOTICE,"Undefined offset:  %ld", 
Z_LVAL_P(offset));
+                       zend_error(E_NOTICE, "Undefined offset:  %ld", 
Z_LVAL_P(offset));
                        return EG(uninitialized_zval_ptr);
                } else {
                        return *retval;
@@ -197,6 +198,11 @@
 
        switch(Z_TYPE_P(offset)) {
        case IS_STRING:
+               if (!value->is_ref) {
+                       value->refcount++;
+               } else {
+                       SEPARATE_ZVAL_IF_NOT_REF(&value);
+               }
                zend_symtable_update(HASH_OF(intern->array), Z_STRVAL_P(offset), 
Z_STRLEN_P(offset)+1, (void**)&value, sizeof(void*), NULL);
                return;
        case IS_DOUBLE:
@@ -208,6 +214,11 @@
                } else {
                        index = Z_LVAL_P(offset);
                }
+               if (!value->is_ref) {
+                       value->refcount++;
+               } else {
+                       SEPARATE_ZVAL_IF_NOT_REF(&value);
+               }
                add_index_zval(intern->array, index, value);
                return;
        default:

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

Reply via email to