diff options
Diffstat (limited to 'navit/search.c')
-rw-r--r-- | navit/search.c | 14 |
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; } |