[Tizen] Fix WebPLoading memory leak
[platform/core/uifw/dali-adaptor.git] / dali / internal / imaging / common / webp-loading.cpp
index a5b8dab..885e142 100644 (file)
@@ -119,11 +119,12 @@ public:
       mWebPData.bytes = mBuffer;
 
       WebPDemuxer* demuxer = WebPDemux(&mWebPData);
-      uint32_t flags = WebPDemuxGetI(demuxer, WEBP_FF_FORMAT_FLAGS);
+      uint32_t     flags   = WebPDemuxGetI(demuxer, WEBP_FF_FORMAT_FLAGS);
       if(flags & ANIMATION_FLAG)
       {
         mIsAnimatedImage = true;
       }
+      WebPDemuxDelete(demuxer);
 
       if(!mIsAnimatedImage)
       {
@@ -237,6 +238,8 @@ public:
       free((void*)mBuffer);
       mBuffer = nullptr;
     }
+
+    mLoadSucceeded = false;
   }
 
   // Moveable but not copyable
@@ -266,7 +269,7 @@ public:
   bool            mIsLocalResource;
 
 #ifdef DALI_WEBP_AVAILABLE
-  WebPData                 mWebPData{0};
+  WebPData mWebPData{0};
 #endif
 
 #ifdef DALI_ANIMATED_WEBP_ENABLED
@@ -395,7 +398,7 @@ Dali::Devel::PixelBuffer WebPLoading::DecodeFrame(uint32_t frameIndex)
 {
   Dali::Devel::PixelBuffer pixelBuffer;
 #ifdef DALI_ANIMATED_WEBP_ENABLED
-  if(mImpl->mLatestLoadedFrame > static_cast<int32_t>(frameIndex))
+  if(mImpl->mLatestLoadedFrame >= static_cast<int32_t>(frameIndex))
   {
     mImpl->mLatestLoadedFrame = INITIAL_INDEX;
     WebPAnimDecoderReset(mImpl->mWebPAnimDecoder);