cvs: php4 /ext/standard var.c

From: Date: Sat, 01 Feb 2003 03:52:32 +0000
Subject: cvs: php4 /ext/standard var.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-18344@lists.php.net to get a copy of this message
wez Fri Jan 31 22:52:32 2003 EDT Modified files: /php4/ext/standard var.c Log: Don't assume that objects have class entries (in the ZE1 sense) when determining the class name. Additionally, don't assume that objects have a properties hash either. Index: php4/ext/standard/var.c diff -u php4/ext/standard/var.c:1.156 php4/ext/standard/var.c:1.157 --- php4/ext/standard/var.c:1.156 Fri Jan 31 11:24:12 2003 +++ php4/ext/standard/var.c Fri Jan 31 22:52:31 2003 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: var.c,v 1.156 2003/01/31 16:24:12 sas Exp $ */ +/* $Id: var.c,v 1.157 2003/02/01 03:52:31 wez Exp $ */ /* {{{ includes @@ -59,6 +59,8 @@ void php_var_dump(zval **struc, int level TSRMLS_DC) { HashTable *myht = NULL; + char *class_name; + zend_uint class_name_len; if (level > 1) { php_printf("%*c", level - 1, ' '); @@ -92,13 +94,18 @@ goto head_done; case IS_OBJECT: myht = Z_OBJPROP_PP(struc); - if (myht->nApplyCount > 1) { + if (myht && myht->nApplyCount > 1) { PUTS("*RECURSION*\n"); return; } - php_printf("%sobject(%s)(%d) {\n", COMMON, Z_OBJCE_PP(struc)->name, zend_hash_num_elements(myht)); + + Z_OBJ_HANDLER(**struc, get_class_name)(*struc, &class_name, &class_name_len, 0 TSRMLS_CC); + + php_printf("%sobject(%s)(%d) {\n", COMMON, class_name, myht ? zend_hash_num_elements(myht) : 0); head_done: - zend_hash_apply_with_arguments(myht, (apply_func_args_t) php_array_element_dump, 1, level); + if (myht) { + zend_hash_apply_with_arguments(myht, (apply_func_args_t) php_array_element_dump, 1, level); + } if (level > 1) { php_printf("%*c", level-1, ' '); } @@ -165,6 +172,8 @@ void php_debug_zval_dump(zval **struc, int level TSRMLS_DC) { HashTable *myht = NULL; + char *class_name; + zend_uint class_name_len; if (level > 1) { php_printf("%*c", level - 1, ' '); @@ -194,9 +203,12 @@ goto head_done; case IS_OBJECT: myht = Z_OBJPROP_PP(struc); - php_printf("%sobject(%s)(%d) refcount(%u){\n", COMMON, Z_OBJCE_PP(struc)->name, zend_hash_num_elements(myht), Z_REFCOUNT_PP(struc)); + Z_OBJ_HANDLER(**struc, get_class_name)(*struc, &class_name, &class_name_len, 0 TSRMLS_CC); + php_printf("%sobject(%s)(%d) refcount(%u){\n", COMMON, class_name, myht ? zend_hash_num_elements(myht) : 0, Z_REFCOUNT_PP(struc)); head_done: - zend_hash_apply_with_arguments(myht, (apply_func_args_t) zval_array_element_dump, 1, level); + if (myht) { + zend_hash_apply_with_arguments(myht, (apply_func_args_t) zval_array_element_dump, 1, level); + } if (level > 1) { php_printf("%*c", level-1, ' '); } @@ -280,6 +292,8 @@ HashTable *myht; char* tmp_str; int tmp_len; + char *class_name; + zend_uint class_name_len; switch (Z_TYPE_PP(struc)) { case IS_BOOL: @@ -318,8 +332,11 @@ if (level > 1) { php_printf("\n%*c", level - 1, ' '); } - php_printf ("class %s {\n", Z_OBJCE_PP(struc)->name); - zend_hash_apply_with_arguments(myht, (apply_func_args_t) php_object_element_export, 1, level); + Z_OBJ_HANDLER(**struc, get_class_name)(*struc, &class_name, &class_name_len, 0 TSRMLS_CC); + php_printf ("class %s {\n", class_name); + if (myht) { + zend_hash_apply_with_arguments(myht, (apply_func_args_t) php_object_element_export, 1, level); + } if (level > 1) { php_printf("%*c", level - 1, ' '); }

« previous php.cvs (#18344) next »