# HG changeset patch # User Petr Ostadal # Date 1219782090 0 # Node ID 788d59ed765b81391ed3150a120aedf2441869bb # Parent 692340c71577b0253b186ec424623e69b73900ce Fixed segfault when is run inside directory with non valid uft-8 image filename. diff -r 692340c71577 -r 788d59ed765b src/filedata.c --- a/src/filedata.c Tue Aug 26 13:56:56 2008 +0000 +++ b/src/filedata.c Tue Aug 26 20:21:30 2008 +0000 @@ -149,22 +149,22 @@ 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) diff -r 692340c71577 -r 788d59ed765b src/ui_fileops.c --- a/src/ui_fileops.c Tue Aug 26 13:56:56 2008 +0000 +++ b/src/ui_fileops.c Tue Aug 26 20:21:30 2008 +0000 @@ -172,20 +172,16 @@ 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; }