imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoder.cpp
--- a/imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoder.cpp Thu May 27 13:11:20 2010 +0300
+++ b/imagehandlingutilities/thumbnailmanager/plugins/image/src/thumbnailimagedecoder.cpp Fri Jun 11 13:58:45 2010 +0300
@@ -52,8 +52,9 @@
// C++ default constructor can NOT contain any code, that might leave.
// ---------------------------------------------------------------------------
//
-CThumbnailImageDecoder::CThumbnailImageDecoder( RFs& aFs ): CActive(
- EPriorityStandard ), iFs( aFs )
+CThumbnailImageDecoder::CThumbnailImageDecoder( RFs& aFs ):
+ CActive(EPriorityStandard ), iBitmap( NULL ), iJpegReadBuffer( NULL ),
+ iExifThumbImage( NULL ), iFs( aFs ), iBuffer( NULL )
{
CActiveScheduler::Add( this );
}
@@ -248,12 +249,18 @@
void CThumbnailImageDecoder::Release()
{
Cancel();
+
+ delete iDecoder;
+ iDecoder = NULL;
+
+ delete iBitmap;
+ iBitmap = NULL;
delete iJpegReadBuffer;
iJpegReadBuffer = NULL;
delete iExifThumbImage;
iExifThumbImage = NULL;
- delete iDecoder;
- iDecoder = NULL;
+
+ iBuffer = NULL; // we don't own the buffer
}
@@ -266,13 +273,18 @@
if ( iDecoder )
{
iDecoder->Cancel();
- delete iJpegReadBuffer;
- iJpegReadBuffer = NULL;
- delete iExifThumbImage;
- iExifThumbImage = NULL;
delete iDecoder;
iDecoder = NULL;
}
+
+ delete iBitmap;
+ iBitmap = NULL;
+ delete iJpegReadBuffer;
+ iJpegReadBuffer = NULL;
+ delete iExifThumbImage;
+ iExifThumbImage = NULL;
+
+ iBuffer = NULL; // we don't own the buffer
}
@@ -286,6 +298,8 @@
iObserver->ThumbnailProviderReady( iStatus.Int(), iBitmap, iOriginalSize, iEXIF, iPortrait );
iBitmap = NULL; // owned by server now
+ iBuffer = NULL; // we don't own the buffer
+
Release();
}
@@ -570,8 +584,7 @@
CImageDecoder::EPreferFastDecode | CImageDecoder::EOptionAlwaysThread );
}
- TRAPD( err, iDecoder = CExtJpegDecoder::DataNewL( iFs, * iExifThumbImage,
- options ));
+ TRAPD( err, iDecoder = CExtJpegDecoder::DataNewL( iFs, * iExifThumbImage, options ));
if ( err == KErrNotFound || err == KErrNotSupported )
{