330 EXPORT_C void TCatalogsDebug::Print( TRefByValue<const TDesC16> aFmt, ... ) |
330 EXPORT_C void TCatalogsDebug::Print( TRefByValue<const TDesC16> aFmt, ... ) |
331 { |
331 { |
332 VA_LIST list; |
332 VA_LIST list; |
333 VA_START( list, aFmt ); |
333 VA_START( list, aFmt ); |
334 |
334 |
|
335 HBufC8* buffer = NULL; |
|
336 HBufC* buffer16 = NULL; |
|
337 HBufC8* buffer16to8 = NULL; |
|
338 |
335 if( iOutput & EOutputExtLogger ) |
339 if( iOutput & EOutputExtLogger ) |
336 if( !DebugHeap()->IsEnabled( iType ) ) return; |
340 if( !DebugHeap()->IsEnabled( iType ) ) return; |
337 |
341 |
338 // Disable debug heap (if installed) to prevent infinite recursion. |
342 // Disable debug heap (if installed) to prevent infinite recursion. |
339 TBool debugHeapActive = RCatalogsDebugHeap::Activate( EFalse ); |
343 TBool debugHeapActive = RCatalogsDebugHeap::Activate( EFalse ); |
340 |
344 |
341 HBufC8* buffer = HBufC8::New( KCatalogsDebugBufferSize ); |
345 buffer = HBufC8::New( KCatalogsDebugBufferSize ); |
342 if ( buffer == NULL ) goto exit1; |
346 if ( buffer == NULL ) goto exit1; |
343 |
347 |
344 PrintGeneral( buffer->Des() ); |
348 PrintGeneral( buffer->Des() ); |
345 |
349 |
346 HBufC* buffer16 = HBufC::New( KCatalogsDebugBufferSize ); |
350 buffer16 = HBufC::New( KCatalogsDebugBufferSize ); |
347 if ( buffer16 == NULL ) goto exit2; |
351 if ( buffer16 == NULL ) goto exit2; |
348 buffer16->Des().AppendFormatList( aFmt, list ); |
352 buffer16->Des().AppendFormatList( aFmt, list ); |
349 |
353 |
350 HBufC8* buffer16to8 = HBufC8::New( buffer16->Length() ); |
354 buffer16to8 = HBufC8::New( buffer16->Length() ); |
351 if ( buffer16to8 == NULL ) goto exit3; |
355 if ( buffer16to8 == NULL ) goto exit3; |
352 buffer16to8->Des().Copy( *buffer16 ); |
356 buffer16to8->Des().Copy( *buffer16 ); |
353 |
357 |
354 #ifndef CATALOGS_DEBUG_XML |
358 #ifndef CATALOGS_DEBUG_XML |
355 buffer->Des().Append( KCatalogsSeparator ); |
359 buffer->Des().Append( KCatalogsSeparator ); |