loaders jpg: fix all memory leaks. 04/289004/1
authorHermet Park <chuneon.park@samsung.com>
Mon, 24 Jan 2022 11:48:54 +0000 (20:48 +0900)
committerMichal Szczecinski <mihashco89@gmail.com>
Mon, 27 Feb 2023 08:26:04 +0000 (09:26 +0100)
These were detected by asan with PictureJpg example,

fixed them all.

Change-Id: Ie63bcef3aa40945aa511db6df3fab9cc650c595b

src/loaders/jpg/tvgJpgLoader.cpp
src/loaders/jpg/tvgJpgd.cpp

index 6795c10..7b90b4a 100644 (file)
@@ -47,6 +47,7 @@ JpgLoader::~JpgLoader()
 {
     jpgdDelete(decoder);
     if (freeData) free(data);
+    free(image);
 }
 
 
@@ -128,5 +129,9 @@ unique_ptr<Surface> JpgLoader::bitmap()
 
 void JpgLoader::run(unsigned tid)
 {
+    if (image) {
+        free(image);
+        image = nullptr;
+    }
     image = jpgdDecompress(decoder);
 }
\ No newline at end of file
index 0c74cdf..b80516a 100644 (file)
@@ -1080,7 +1080,9 @@ namespace DCT_Upsample
 // Unconditionally frees all allocated m_blocks.
 void jpeg_decoder::free_all_blocks()
 {
+    delete(m_pStream);
     m_pStream = nullptr;
+
     for (mem_block *b = m_pMem_blocks; b; ) {
         mem_block *n = b->m_pNext;
         free(b);
@@ -2815,7 +2817,6 @@ int jpeg_decoder::begin_decoding()
 jpeg_decoder::~jpeg_decoder()
 {
     free_all_blocks();
-    delete(m_pStream);
 }
 
 
@@ -3025,4 +3026,4 @@ unsigned char* jpgdDecompress(jpeg_decoder* decoder)
         }
     }
     return pImage_data;
-}
\ No newline at end of file
+}