From 18d80ca385e38b3bf9bc4ef36264bb4d430aa1f6 Mon Sep 17 00:00:00 2001 From: Vladimir Nadvornik 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 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/filedata.c b/src/filedata.c index f6e38965..78fd74ef 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) -- 2.20.1