Fix opening filenames beginning with two dots (closes #2858487).
git-svn-id: https://geany.svn.sourceforge.net/svnroot/geany/trunk@4183 ea778897-0a13-0410-b9d1-a72fbfd435f5
This commit is contained in:
parent
8dbaee549d
commit
f4822ae10a
@ -1,3 +1,9 @@
|
|||||||
|
2009-09-14 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
|
||||||
|
|
||||||
|
* src/utils.c:
|
||||||
|
Fix opening filenames beginning with two dots (closes #2858487).
|
||||||
|
|
||||||
|
|
||||||
2009-09-13 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
|
2009-09-13 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
|
||||||
|
|
||||||
* src/keybindings.c:
|
* src/keybindings.c:
|
||||||
|
|||||||
10
src/utils.c
10
src/utils.c
@ -1733,8 +1733,8 @@ void utils_tidy_path(gchar *filename)
|
|||||||
if (preserve_double_backslash)
|
if (preserve_double_backslash)
|
||||||
g_string_prepend(str, "\\");
|
g_string_prepend(str, "\\");
|
||||||
|
|
||||||
/* replace "/.." */
|
/* replace "/../" */
|
||||||
needle = G_DIR_SEPARATOR_S "..";
|
needle = G_DIR_SEPARATOR_S ".." G_DIR_SEPARATOR_S;
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
c = strstr(str->str, needle);
|
c = strstr(str->str, needle);
|
||||||
@ -1746,9 +1746,11 @@ void utils_tidy_path(gchar *filename)
|
|||||||
if (pos <= 3)
|
if (pos <= 3)
|
||||||
break; /* bad path */
|
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);
|
c = g_strrstr(tmp, G_DIR_SEPARATOR_S);
|
||||||
g_return_if_fail(c);
|
g_return_if_fail(c);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user