> Hi Viktor,
>
> Maybe reverting the hack for non win code too is useful temporarily, until
> the final solution designing. Maybe an RTE mechanism should be defined in non
> win part to avoid the reentrant call of the trace engine.
> This will signal the trap residing in the following code:
> HB_TRACE( HB_TR_DEBUG, ( " new_QApplication %i B
> %i KB", ( int )hb_xquery( 1001 ), hbqt_getmemused() ) );
> As I mentioned in one of my previous mail, the hb_xquery() calls the trace
> engine too, generating undesired behavior.
In this case hb_xquery() is evaluated _before_ calling trace engine,
so it shouldn't cause any problems.
Above code is equivalent to:
tmp = hb_xquery( 1001 )
HB_TRACE( HB_TR_DEBUG, ( "%i", tmp ) );
> The va_end() issue:
>
> Please analyze the following code snippets:
> …
> if( s_enabled && level <= hb_tr_level() )
> {
> va_list ap;
> va_start( ap, fmt );
> hb_tracelog_( level, file, line, proc, fmt, ap );
> va_end( ap );
> }
> …
> if( s_enabled )
> {
> va_list ap;
> va_start( ap, fmt );
> hb_tracelog_( hb_tr_level_, hb_tr_file_, hb_tr_line_, NULL, fmt, ap );
> va_end( ap );
> …
> So we can leave the:
> /*
> * Print the name and arguments for the function.
> */
> vfprintf( s_fp, fmt, ap );
>
> /* if( s_winout ) this is not necessary here */
> /* TOFIX: va_end() is _required_ here according to all available
> documentation. */
> /* va_end( ap ); Generates access violation in the subsequent hb_vsnprintf
> */
>
> without va_end();
Okay I get it, there is no va_start() in hb_tracelog_(),
so va_end() is not necessary. Thanks!
Brgds,
Viktor
_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour