Blob Blame History Raw
From 18d80ca385e38b3bf9bc4ef36264bb4d430aa1f6 Mon Sep 17 00:00:00 2001
From: Vladimir Nadvornik <nadvornik@suse.cz>
Date: Fri, 30 Sep 2011 23:57:31 +0200
Subject: [PATCH] fixed filelist_sort_compare_filedata to not return 0 no different files

---
 src/filedata.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/filedata.c b/src/filedata.c
index f6e3896..78fd74e 100644
--- a/src/filedata.c
+++ b/src/filedata.c
@@ -852,6 +852,7 @@ static gboolean filelist_sort_ascend = TRUE;
 
 gint filelist_sort_compare_filedata(FileData *fa, FileData *fb)
 {
+	gint ret;
 	if (!filelist_sort_ascend)
 		{
 		FileData *tmp = fa;
@@ -875,7 +876,8 @@ gint filelist_sort_compare_filedata(FileData *fa, FileData *fb)
 			break;
 #ifdef HAVE_STRVERSCMP
 		case SORT_NUMBER:
-			return strverscmp(fa->name, fb->name);
+			ret = strverscmp(fa->name, fb->name);
+			if (ret != 0) return ret;
 			break;
 #endif
 		default:
@@ -883,9 +885,16 @@ gint filelist_sort_compare_filedata(FileData *fa, FileData *fb)
 		}
 
 	if (options->file_sort.case_sensitive)
-		return strcmp(fa->collate_key_name, fb->collate_key_name);
+		ret = strcmp(fa->collate_key_name, fb->collate_key_name);
 	else
-		return strcmp(fa->collate_key_name_nocase, fb->collate_key_name_nocase);
+		ret = strcmp(fa->collate_key_name_nocase, fb->collate_key_name_nocase);
+
+	if (ret != 0) return ret;
+	
+	/* do not return 0 unless the files are really the same 
+	   file_data_pool ensures that original_path is unique 
+	*/
+	return strcmp(fa->original_path, fb->original_path);
 }
 
 gint filelist_sort_compare_filedata_full(FileData *fa, FileData *fb, SortType method, gboolean ascend)
-- 
1.6.1