Fix strswab() to reliably find end of string
authorWolfgang Denk <wd@pollux.(none)>
Sun, 25 Sep 2005 14:15:17 +0000 (16:15 +0200)
committerWolfgang Denk <wd@pollux.(none)>
Sun, 25 Sep 2005 14:15:17 +0000 (16:15 +0200)
Patch by Andrew Dyer, 08 Feb 2005

CHANGELOG
lib_generic/string.c

index cef4f8c24ff5934ed863cb87736243e283ee15c9..a00213d08a47f06d761bd5fd30f47e2df49893bf 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,9 @@
 Changes for U-Boot 1.1.4:
 ======================================================================
 
+* Fix strswab() to reliably find end of string
+  Patch by Andrew Dyer, 08 Feb 2005
+
 * Fix typos in include/ppc440.h
   Patch by Andrew E Mileski, 04 Feb 2005
 
index 5ba8d7cb514e6561af04c6e3251014a07e5a60d1..dea4d69a9b394d1c46958fc402ac825e6fbeb7f2 100644 (file)
@@ -374,17 +374,18 @@ char * strsep(char **s, const char *ct)
  */
 char *strswab(const char *s)
 {
-       char *p;
+       char *p, *q;
 
        if ((NULL == s) || ('\0' == *s)) {
                return (NULL);
        }
 
-       for (p = ((char *)s + 1); '\0' != *p; p += 2) {
+       for (p=(char *)s, q=p+1; (*p != '\0') && (*p != '\0'); p+=2, q+=2) {
                char  tmp;
-               tmp = *(p-1);
-               *(p-1) = *p;
-               *p = tmp;
+
+               tmp = *p;
+               *p  = *q;
+               *q  = tmp;
        }
 
        return (char *) s;