diff --git a/gio/ChangeLog b/gio/ChangeLog index 6df6bc295..1417f65dd 100644 --- a/gio/ChangeLog +++ b/gio/ChangeLog @@ -1,3 +1,10 @@ +2009-03-04 Alexander Larsson + + Bug 573843 – g_get_current_dir returns non-absolute path + + * glocalfile.c (canonicalize_filename): + Handle the case where g_get_current_dir() returns a non-absolute path. + 2009-03-04 Alexander Larsson Bug 573970 – crash in gunixvolumemonitor:update_mounts when unmounting diff --git a/gio/glocalfile.c b/gio/glocalfile.c index 217ee988c..b1d7353df 100644 --- a/gio/glocalfile.c +++ b/gio/glocalfile.c @@ -244,6 +244,15 @@ canonicalize_filename (const char *filename) start = (char *)g_path_skip_root (canon); + if (start == NULL) + { + /* This shouldn't really happen, as g_get_current_dir() should + return an absolute pathname, but bug 573843 shows this is + not always happening */ + g_free (canon); + return g_build_filename (G_DIR_SEPARATOR_S, filename, NULL); + } + /* POSIX allows double slashes at the start to * mean something special (as does windows too). * So, "//" != "/", but more than two slashes