[easytag/wip/clang-analyzer: 14/14] Refactor ET_Detect_Changes_Of_File_Tag()



commit cf46e0368bd53412643a80941b278fd60ffdb605
Author: David King <amigadave amigadave com>
Date:   Mon Aug 12 16:43:06 2013 +0100

    Refactor ET_Detect_Changes_Of_File_Tag()
    
    Improve for loop for iterating pictures associated with the tag, and
    avoid a potential NULL dereference found with the Clang static analyzer.

 src/et_core.c |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)
---
diff --git a/src/et_core.c b/src/et_core.c
index 57233f5..8e6f676 100644
--- a/src/et_core.c
+++ b/src/et_core.c
@@ -4252,10 +4252,8 @@ gboolean ET_Detect_Changes_Of_File_Tag (File_Tag *FileTag1, File_Tag *FileTag2)
     if ( FileTag1->encoded_by &&  FileTag2->encoded_by && 
g_utf8_collate(FileTag1->encoded_by,FileTag2->encoded_by)!=0 ) return TRUE;
 
     /* Picture */
-    pic1 = FileTag1->picture;
-    pic2 = FileTag2->picture;
-
-    for(;;)
+    for (pic1 = FileTag1->picture, pic2 = FileTag2->picture; ;
+         pic1 = pic1->next, pic2 = pic2->next)
     {
         if( (pic1 && !pic2) || (!pic1 && pic2) )
             return TRUE;
@@ -4264,6 +4262,8 @@ gboolean ET_Detect_Changes_Of_File_Tag (File_Tag *FileTag1, File_Tag *FileTag2)
         //if (!pic1->data || !pic2->data)
         //    break; // => no changes
 
+        if (!pic1->data && !pic2->data)
+            return FALSE;
         if (pic1->data && !pic2->data)
             return TRUE;
         if (!pic1->data && pic2->data)
@@ -4282,9 +4282,6 @@ gboolean ET_Detect_Changes_Of_File_Tag (File_Tag *FileTag1, File_Tag *FileTag2)
         if (pic1->description && pic2->description
         &&  g_utf8_collate(pic1->description, pic2->description)!=0 )
             return TRUE;
-
-        pic1 = pic1->next;
-        pic2 = pic2->next;
     }
 
     return FALSE; /* No changes */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]