summaryrefslogtreecommitdiff
path: root/navit/search.c
diff options
context:
space:
mode:
Diffstat (limited to 'navit/search.c')
-rw-r--r--navit/search.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/navit/search.c b/navit/search.c
index 06afcbfe6..e700f4355 100644
--- a/navit/search.c
+++ b/navit/search.c
@@ -135,13 +135,20 @@ int search_list_level(enum attr_type attr_type) {
}
}
-static char *search_fix_spaces(char *str) {
+/**
+ * @brief Replaces ',' and '/' by ' ', deduplicates spaces within the string
+ * and strips spaces from both ends of the string
+ *
+ * @param pointer to the string to cleanup
+ * @return pointer to the cleaned up string
+ */
+char *search_fix_spaces(const char *str) {
int i;
int len=strlen(str);
char c,*s,*d,*ret=g_strdup(str);
for (i = 0 ; i < len ; i++) {
- if (ret[i] == ',' || ret[i] == ',' || ret[i] == '/')
+ if (ret[i] == ',' || ret[i] == '/')
ret[i]=' ';
}
s=ret;
@@ -160,6 +167,9 @@ static char *search_fix_spaces(char *str) {
len--;
}
} while (c);
+ // Make sure the string is terminated at current position even if nothing has been added to it.
+ // This case happen when you use a string containing only chars that will be discarded.
+ *d='\0';
return ret;
}