diff --git a/glib/gfileutils.c b/glib/gfileutils.c index dbbd12011..8681b1326 100644 --- a/glib/gfileutils.c +++ b/glib/gfileutils.c @@ -2754,8 +2754,12 @@ g_canonicalize_filename (const gchar *filename, *output = G_DIR_SEPARATOR; /* 1 to re-increment after the final decrement above (so that output >= canon), - * and 1 to skip the first `/` */ - output += 2; + * and 1 to skip the first `/`. There might not be a first `/` if + * the @canon is a Windows `//server/share` style path with no + * trailing directories. @after_root will be '\0' in that case. */ + output++; + if (*output == G_DIR_SEPARATOR) + output++; /* POSIX allows double slashes at the start to mean something special * (as does windows too). So, "//" != "/", but more than two slashes