changeset 2020:730ef621def9

prevent crash in g_utf8_collate_key https://sourceforge.net/tracker/?func=detail&aid=3330014&group_id=222125&atid=1054680
author Vladimir Nadvornik <nadvornik@suse.cz>
date Mon, 30 Jul 2012 18:21:13 +0200
parents 69781cba7cfc
children 26dfd7a4d130
files src/filedata.c
diffstat 1 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/filedata.c	Mon Jul 30 16:31:04 2012 +0200
+++ b/src/filedata.c	Mon Jul 30 18:21:13 2012 +0200
@@ -247,19 +247,22 @@
 static void file_data_set_collate_keys(FileData *fd)
 {
 	gchar *caseless_name;
-
-	caseless_name = g_utf8_casefold(fd->name, -1);
+	gchar *valid_name;
+
+	valid_name = g_filename_display_name(fd->name);
+	caseless_name = g_utf8_casefold(valid_name, -1);
 
 	g_free(fd->collate_key_name);
 	g_free(fd->collate_key_name_nocase);
 
 #if 0 && GLIB_CHECK_VERSION(2, 8, 0)
-	fd->collate_key_name = g_utf8_collate_key_for_filename(fd->name, -1);
+	fd->collate_key_name = g_utf8_collate_key_for_filename(valid_name, -1);
 	fd->collate_key_name_nocase = g_utf8_collate_key_for_filename(caseless_name, -1);
 #else
-	fd->collate_key_name = g_utf8_collate_key(fd->name, -1);
+	fd->collate_key_name = g_utf8_collate_key(valid_name, -1);
 	fd->collate_key_name_nocase = g_utf8_collate_key(caseless_name, -1);
 #endif
+	g_free(valid_name);
 	g_free(caseless_name);
 }