Fixed segfault when is run inside directory with non valid uft-8 image
authorPetr Ostadal <postadal@suse.cz>
Tue, 26 Aug 2008 20:21:30 +0000 (20:21 +0000)
committerPetr Ostadal <postadal@suse.cz>
Tue, 26 Aug 2008 20:21:30 +0000 (20:21 +0000)
filename.

src/filedata.c
src/ui_fileops.c

index 3692df4..922b405 100644 (file)
@@ -149,22 +149,22 @@ void file_data_increment_version(FileData *fd)
 static void file_data_set_collate_keys(FileData *fd)
 {
        gchar *caseless_name;
-
-       g_assert(g_utf8_validate(fd->name, -1, NULL));
-
-       caseless_name = g_utf8_casefold(fd->name, -1);
+       gchar *name = path_to_utf8(fd->name);
+       
+       caseless_name = g_utf8_casefold(name, -1);
 
        g_free(fd->collate_key_name);
        g_free(fd->collate_key_name_nocase);
 
 #if 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(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(name, -1);
        fd->collate_key_name_nocase = g_utf8_collate_key(caseless_name, -1);
 #endif
        g_free(caseless_name);
+       g_free(name);
 }
 
 static void file_data_set_path(FileData *fd, const gchar *path)
index 4cad4da..ae02b32 100644 (file)
@@ -172,20 +172,16 @@ gchar *path_from_utf8(const gchar *utf8)
        return path;
 }
 
-/* first we try the HOME environment var, if that doesn't work, we try getpwuid(). */
+/* first we try the HOME environment var, if that doesn't work, we try g_get_homedir(). */
 const gchar *homedir(void)
 {
        static gchar *home = NULL;
 
        if (!home)
-               {
                home = path_to_utf8(getenv("HOME"));
-               }
+       
        if (!home)
-               {
-               struct passwd *pw = getpwuid(getuid());
-               if (pw) home = path_to_utf8(pw->pw_dir);
-               }
+               home = path_to_utf8(g_get_home_dir());
 
        return home;
 }