diff options
Diffstat (limited to 'libbb/trim.c')
-rw-r--r-- | libbb/trim.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/libbb/trim.c b/libbb/trim.c index 16cb4fbb0..e47fec74e 100644 --- a/libbb/trim.c +++ b/libbb/trim.c | |||
@@ -10,9 +10,10 @@ | |||
10 | 10 | ||
11 | #include "libbb.h" | 11 | #include "libbb.h" |
12 | 12 | ||
13 | void FAST_FUNC trim(char *s) | 13 | char* FAST_FUNC trim(char *s) |
14 | { | 14 | { |
15 | size_t len = strlen(s); | 15 | size_t len = strlen(s); |
16 | size_t old = len; | ||
16 | 17 | ||
17 | /* trim trailing whitespace */ | 18 | /* trim trailing whitespace */ |
18 | while (len && isspace(s[len-1])) | 19 | while (len && isspace(s[len-1])) |
@@ -26,5 +27,12 @@ void FAST_FUNC trim(char *s) | |||
26 | memmove(s, nws, len); | 27 | memmove(s, nws, len); |
27 | } | 28 | } |
28 | } | 29 | } |
29 | s[len] = '\0'; | 30 | |
31 | s += len; | ||
32 | /* If it was a "const char*" which does not need trimming, | ||
33 | * avoid superfluous store */ | ||
34 | if (old != len) | ||
35 | *s = '\0'; | ||
36 | |||
37 | return s; | ||
30 | } | 38 | } |