workarounds, I do not understand why it segfault, it should *NOT*
authorPierre Habouzit <madcoder@debian.org>
Fri, 1 Dec 2006 10:41:59 +0000 (11:41 +0100)
committerPierre Habouzit <madcoder@debian.org>
Fri, 1 Dec 2006 10:41:59 +0000 (11:41 +0100)
Signed-off-by: Pierre Habouzit <madcoder@debian.org>
lib-lib/str.c
lib-mime/rfc1524.c

index e4616e6..ab603da 100644 (file)
@@ -117,16 +117,12 @@ ssize_t m_strncpy(char *dst, ssize_t n, const char *src, ssize_t l)
 
 char *m_strrtrim(char *s)
 {
 
 char *m_strrtrim(char *s)
 {
-    if (s) {
-        char *p = s + m_strlen(s);
+    ssize_t len = m_strlen(s);
 
 
-        while (p > s && ISSPACE(p[-1])) {
-            *--p = '\0';
-        }
-        return p;
-    }
+    while (len > 1 && ISSPACE(s[len - 1]))
+        s[--len] = '\0';
 
 
-    return NULL;
+    return s + len;
 }
 
 const char *m_stristrn(const char *haystack, const char *needle, ssize_t nlen)
 }
 
 const char *m_stristrn(const char *haystack, const char *needle, ssize_t nlen)
index 5b6eb50..fc02062 100644 (file)
@@ -169,7 +169,8 @@ static char *parse_field(char *p, char **field, char **value)
             *p++ = '\0';
           case '\0':
             m_strrtrim(*field);
             *p++ = '\0';
           case '\0':
             m_strrtrim(*field);
-            m_strrtrim(*value);
+            if (*value)
+                m_strrtrim(*value);
             return p;
 
           case '\\':
             return p;
 
           case '\\':