iliaa           Wed Jul 26 23:18:41 2006 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/reflection     php_reflection.c 
    /php-src/ext/reflection/tests       bug38132.phpt 
  Log:
  Improved fix for bug #38132
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.164.2.33.2.18&r2=1.164.2.33.2.19&diff_format=u
Index: php-src/ext/reflection/php_reflection.c
diff -u php-src/ext/reflection/php_reflection.c:1.164.2.33.2.18 
php-src/ext/reflection/php_reflection.c:1.164.2.33.2.19
--- php-src/ext/reflection/php_reflection.c:1.164.2.33.2.18     Wed Jul 26 
08:03:48 2006
+++ php-src/ext/reflection/php_reflection.c     Wed Jul 26 23:18:41 2006
@@ -20,7 +20,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: php_reflection.c,v 1.164.2.33.2.18 2006/07/26 08:03:48 tony2001 Exp $ 
*/
+/* $Id: php_reflection.c,v 1.164.2.33.2.19 2006/07/26 23:18:41 iliaa Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -2643,19 +2643,13 @@
                ulong num_index;
 
                if (zend_hash_get_current_key_ex(CE_STATIC_MEMBERS(ce), &key, 
&key_len, &num_index, 0, &pos) != FAILURE && key) {
-                       zval_add_ref(value);
+                       char *prop_name, *class_name;
 
-                       if (*key == '\0') {
-                               *key++;
-                               key_len--;
-                               
-                       }
-                       if (*key == '*' && *(key+1) == '\0') {
-                               *(key+1) = *key++;
-                               key_len--;
-                       }
+                       zend_unmangle_property_name(key, key_len-1, 
&class_name, &prop_name);
+
+                       zval_add_ref(value);
 
-                       zend_hash_update(Z_ARRVAL_P(return_value), key, 
key_len, value, sizeof(zval *), NULL);
+                       zend_hash_update(Z_ARRVAL_P(return_value), prop_name, 
strlen(prop_name)+1, value, sizeof(zval *), NULL);
                }
                zend_hash_move_forward_ex(CE_STATIC_MEMBERS(ce), &pos);
        }
@@ -4800,7 +4794,7 @@
        php_info_print_table_start();
        php_info_print_table_header(2, "Reflection", "enabled");
 
-       php_info_print_table_row(2, "Version", "$Id: php_reflection.c,v 
1.164.2.33.2.18 2006/07/26 08:03:48 tony2001 Exp $");
+       php_info_print_table_row(2, "Version", "$Id: php_reflection.c,v 
1.164.2.33.2.19 2006/07/26 23:18:41 iliaa Exp $");
 
        php_info_print_table_end();
 } /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/bug38132.phpt?r1=1.1.2.1&r2=1.1.2.2&diff_format=u
Index: php-src/ext/reflection/tests/bug38132.phpt
diff -u php-src/ext/reflection/tests/bug38132.phpt:1.1.2.1 
php-src/ext/reflection/tests/bug38132.phpt:1.1.2.2
--- php-src/ext/reflection/tests/bug38132.phpt:1.1.2.1  Tue Jul 25 14:06:52 2006
+++ php-src/ext/reflection/tests/bug38132.phpt  Wed Jul 26 23:18:41 2006
@@ -12,22 +12,23 @@
 $class = new ReflectionClass('foo');
 $properties = $class->getStaticProperties();
 var_dump($properties, array_keys($properties));
-var_dump(isset($properties['*bar'])); // false
-var_dump(isset($properties["\0*\0bar"])); // true
-
+var_dump(isset($properties['*bar']));
+var_dump(isset($properties["\0*\0bar"]));
+var_dump(isset($properties["bar"]));
 ?>
 --EXPECT--
 array(2) {
-  ["*bar"]=>
+  ["bar"]=>
   string(3) "baz"
   ["a"]=>
   string(1) "a"
 }
 array(2) {
   [0]=>
-  string(4) "*bar"
+  string(3) "bar"
   [1]=>
   string(1) "a"
 }
-bool(true)
 bool(false)
+bool(false)
+bool(true)

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

Reply via email to