Commit 66f6958e69d8055277356d3cc2e7a1d734db1755

Authored by Michael Holzheu
Committed by Linus Torvalds
1 parent e3816c5407

lib/string.c: fix strim() semantics for strings that have only blanks

Commit 84c95c9acf0 ("string: on strstrip(), first remove leading spaces
before running over str") improved the performance of the strim()
function.

Unfortunately this changed the semantics of strim() and broke my code.
Before the patch it was possible to use strim() without using the return
value for removing trailing spaces from strings that had either only
blanks or only trailing blanks.

Now this does not work any longer for strings that *only* have blanks.

Before patch: "   " -> ""    (empty string)
After patch:  "   " -> "   " (no change)

I think we should remove your patch to restore the old behavior.

The description (lib/string.c):

 * Note that the first trailing whitespace is replaced with a %NUL-terminator

=> The first trailing whitespace of a string that only has whitespace
   characters is the first whitespace

The patch restores the old strim() semantics.

Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Cc: Andre Goddard Rosa <andre.goddard@gmail.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 1 changed file with 1 additions and 2 deletions Side-by-side Diff

... ... @@ -360,7 +360,6 @@
360 360 size_t size;
361 361 char *end;
362 362  
363   - s = skip_spaces(s);
364 363 size = strlen(s);
365 364 if (!size)
366 365 return s;
... ... @@ -370,7 +369,7 @@
370 369 end--;
371 370 *(end + 1) = '\0';
372 371  
373   - return s;
  372 + return skip_spaces(s);
374 373 }
375 374 EXPORT_SYMBOL(strim);
376 375