summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/fe-common/core/completion.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/fe-common/core/completion.c b/src/fe-common/core/completion.c
index 78b1b24b..e78fe7d5 100644
--- a/src/fe-common/core/completion.c
+++ b/src/fe-common/core/completion.c
@@ -321,6 +321,10 @@ GList *filename_complete(const char *path, const char *default_path)
g_return_val_if_fail(path != NULL, NULL);
+ if (path[0] == '\0') {
+ return NULL;
+ }
+
list = NULL;
/* get directory part of the path - expand ~/ */
@@ -350,7 +354,14 @@ GList *filename_complete(const char *path, const char *default_path)
g_free_and_null(dir);
}
- basename = g_path_get_basename(path);
+ len = strlen(path);
+ /* g_path_get_basename() returns the component before the last slash if
+ * the path ends with a directory separator, that's not what we want */
+ if (len > 0 && path[len - 1] == G_DIR_SEPARATOR) {
+ basename = g_strdup("");
+ } else {
+ basename = g_path_get_basename(path);
+ }
len = strlen(basename);
/* add all files in directory to completion list */