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.

 

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();

 

Best regards,

István

 

_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to