iliaa           Sun Jan  7 03:52:45 2007 UTC

  Added files:                 (Branch: PHP_5_2)
    /php-src/ext/spl/tests      bug40036.phpt 

  Modified files:              
    /php-src    NEWS 
    /php-src/ext/spl    spl_array.c 
  Log:
  
  Fixed bug #40036 (empty() does not work correctly with ArrayObject when
  using ARRAY_AS_PROPS).
  
  
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.475&r2=1.2027.2.547.2.476&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.475 php-src/NEWS:1.2027.2.547.2.476
--- php-src/NEWS:1.2027.2.547.2.475     Sat Jan  6 16:50:55 2007
+++ php-src/NEWS        Sun Jan  7 03:52:44 2007
@@ -3,6 +3,8 @@
 ?? Jan 2007, PHP 5.2.1RC3
 - Improved proc_open(). Now on Windows it can run external commands not through
   CMD.EXE. (Dmitry)  
+- Fixed bug #40036 (empty() does not work correctly with ArrayObject when using
+  ARRAY_AS_PROPS). (Ilia)
 - Fixed bug #39504 (xmlwriter_write_dtd_entity() creates Attlist tag,
   not entity). (Hannes)
 
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_array.c?r1=1.71.2.17.2.6&r2=1.71.2.17.2.7&diff_format=u
Index: php-src/ext/spl/spl_array.c
diff -u php-src/ext/spl/spl_array.c:1.71.2.17.2.6 
php-src/ext/spl/spl_array.c:1.71.2.17.2.7
--- php-src/ext/spl/spl_array.c:1.71.2.17.2.6   Mon Jan  1 09:36:07 2007
+++ php-src/ext/spl/spl_array.c Sun Jan  7 03:52:44 2007
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: spl_array.c,v 1.71.2.17.2.6 2007/01/01 09:36:07 sebastian Exp $ */
+/* $Id: spl_array.c,v 1.71.2.17.2.7 2007/01/07 03:52:44 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -476,7 +476,16 @@
        
        switch(Z_TYPE_P(offset)) {
        case IS_STRING:
-               return zend_symtable_exists(spl_array_get_hash_table(intern, 0 
TSRMLS_CC), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
+               if (check_empty) {
+                       zval **tmp;
+                       HashTable *ht = spl_array_get_hash_table(intern, 0 
TSRMLS_CC);
+                       if (zend_hash_find(ht, Z_STRVAL_P(offset), 
Z_STRLEN_P(offset)+1, (void **) &tmp) != FAILURE && zend_is_true(*tmp)) {
+                               return 1;
+                       }
+                       return 0;
+               } else {
+                       return 
zend_symtable_exists(spl_array_get_hash_table(intern, 0 TSRMLS_CC), 
Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
+               }
        case IS_DOUBLE:
        case IS_RESOURCE:
        case IS_BOOL: 
@@ -486,7 +495,16 @@
                } else {
                        index = Z_LVAL_P(offset);
                }
-               return zend_hash_index_exists(spl_array_get_hash_table(intern, 
0 TSRMLS_CC), index);
+               if (check_empty) {
+                       zval **tmp;
+                       HashTable *ht = spl_array_get_hash_table(intern, 0 
TSRMLS_CC);
+                       if (zend_hash_index_find(ht, index, (void **)&tmp) != 
FAILURE && zend_is_true(*tmp)) {
+                               return 1;
+                       }
+                       return 0;
+               } else {
+                       return 
zend_hash_index_exists(spl_array_get_hash_table(intern, 0 TSRMLS_CC), index);
+               }
        default:
                zend_error(E_WARNING, "Illegal offset type");
        }

http://cvs.php.net/viewvc.cgi/php-src/ext/spl/tests/bug40036.phpt?view=markup&rev=1.1
Index: php-src/ext/spl/tests/bug40036.phpt
+++ php-src/ext/spl/tests/bug40036.phpt

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

Reply via email to