+ i_header_size = 0;
+ p_obj = p_this;
+ while( p_obj != NULL )
+ {
+ char *psz_old = NULL;
+ if( p_obj == NULL ) break;
+ if( p_obj->psz_header )
+ {
+ i_header_size += strlen( p_obj->psz_header ) + 4;
+ if( psz_header )
+ {
+ psz_old = strdup( psz_header );
+ psz_header = (char*)realloc( psz_header, i_header_size );
+ snprintf( psz_header, i_header_size , "[%s] %s",
+ p_obj->psz_header, psz_old );
+ }
+ else
+ {
+ psz_header = (char *)malloc( i_header_size );
+ snprintf( psz_header, i_header_size, "[%s]",
+ p_obj->psz_header );
+ }
+ }
+ if( psz_old ) free( psz_old );
+ p_obj = p_obj->p_parent;
+ }
+