On Mon, 15 Jan 2007, Marcus Boerger wrote:

> Any comments?

Shouldn't you init is_temp here? As far as I can see it is not initialized in
every code path, and there is an if() using it in the 3rd patch element here:

> @@ -581,6 +581,7 @@ ZEND_API void zend_print_zval_r_ex(zend_
>                                 HashTable *properties = NULL;
>                                 zstr class_name = NULL_ZSTR;
>                                 zend_uint clen;
> +                               int is_temp;
> 
> 
>                                 if (Z_OBJ_HANDLER_P(expr, get_class_name)) {
>                                         Z_OBJ_HANDLER_P(expr, 
> get_class_name)(expr, &class_name, &clen, 0 TSRMLS_CC);
> @@ -593,8 +594,11 @@ ZEND_API void zend_print_zval_r_ex(zend_
>                                 if (class_name.v) {
>                                         efree(class_name.v);
>                                 }
> -                               if (Z_OBJ_HANDLER_P(expr, get_properties)) {
> +                               if (Z_OBJ_HANDLER_P(expr, get_debug_info)) {
> +                                       properties = Z_OBJ_HANDLER_P(expr, 
> get_debug_info)(expr, &is_temp TSRMLS_CC);
> +                               } else if (Z_OBJ_HANDLER_P(expr, 
> get_properties)) {
>                                         properties = Z_OBJPROP_P(expr);
> +                                       is_temp = 0;
>                                 }
>                                 if (properties) {
>                                         if (++properties->nApplyCount>1) {
> @@ -604,6 +608,10 @@ ZEND_API void zend_print_zval_r_ex(zend_
>                                         }
>                                         print_hash(properties, indent, 1 
> TSRMLS_CC);
>                                         properties->nApplyCount--;
> +                                       if (is_temp) {
> +                                               zend_hash_destroy(properties);
> +                                               efree(properties);
> +                                       }
>                                 }
>                                 break;
>                         }

regards,
Derick
-- 
Derick Rethans
http://derickrethans.nl | http://ez.no | http://xdebug.org

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to