diff --git a/ChangeLog b/ChangeLog index 255adf1ef..fcfe56e56 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-09-14 Nick Treleaven + + * src/utils.c: + Fix opening filenames beginning with two dots (closes #2858487). + + 2009-09-13 Nick Treleaven * src/keybindings.c: diff --git a/src/utils.c b/src/utils.c index 40aef2b78..1e595b65a 100644 --- a/src/utils.c +++ b/src/utils.c @@ -1733,8 +1733,8 @@ void utils_tidy_path(gchar *filename) if (preserve_double_backslash) g_string_prepend(str, "\\"); - /* replace "/.." */ - needle = G_DIR_SEPARATOR_S ".."; + /* replace "/../" */ + needle = G_DIR_SEPARATOR_S ".." G_DIR_SEPARATOR_S; while (1) { c = strstr(str->str, needle); @@ -1746,9 +1746,11 @@ void utils_tidy_path(gchar *filename) if (pos <= 3) break; /* bad path */ - g_string_erase(str, pos, strlen(needle)); /* erase "/.." */ + /* replace "/../" */ + g_string_erase(str, pos, strlen(needle)); + g_string_insert_c(str, pos, G_DIR_SEPARATOR); - tmp = g_strndup(str->str, pos); /* path up to "/.." */ + tmp = g_strndup(str->str, pos); /* path up to "/../" */ c = g_strrstr(tmp, G_DIR_SEPARATOR_S); g_return_if_fail(c);