changeset 2003:a3b90197b9ac

fixed filelist_sort_compare_filedata to not return 0 no different files
author Vladimir Nadvornik <nadvornik@suse.cz>
date Fri, 30 Sep 2011 23:57:31 +0200
parents 91b066c12e44
children 90dc2a05117c
files src/filedata.c
diffstat 1 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/filedata.c	Fri Sep 30 10:54:32 2011 +0200
+++ b/src/filedata.c	Fri Sep 30 23:57:31 2011 +0200
@@ -917,6 +917,7 @@
 
 gint filelist_sort_compare_filedata(FileData *fa, FileData *fb)
 {
+	gint ret;
 	if (!filelist_sort_ascend)
 		{
 		FileData *tmp = fa;
@@ -940,7 +941,8 @@
 			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:
@@ -948,9 +950,16 @@
 		}
 
 	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)