diff options
Diffstat (limited to 'string')
-rw-r--r-- | string/strcoll.c | 6 | ||||
-rw-r--r-- | string/strxfrm.c | 10 |
2 files changed, 15 insertions, 1 deletions
diff --git a/string/strcoll.c b/string/strcoll.c index cc39820fcf..8457ef8df1 100644 --- a/string/strcoll.c +++ b/string/strcoll.c @@ -82,6 +82,12 @@ STRCOLL (s1, s2, l) if (collate_nrules == 0) return STRCMP (s1, s2); + /* Handle empty strings as a special case. */ + if (*s1 == '\0') + return *s2 == '\0' ? 0 : -1; + else if (*s2 == '\0') + return 1; + /* Get full information about the strings. This means we get information for all passes in a special data structure. */ get_string (s1, s1forw, s1backw); diff --git a/string/strxfrm.c b/string/strxfrm.c index 8222adf435..795e8e4a73 100644 --- a/string/strxfrm.c +++ b/string/strxfrm.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. @@ -184,6 +184,14 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l) return STRLEN (src); } + /* Handle an empty string as a special case. */ + if (*src == '\0') + { + if (n != 0) + *dest = '\0'; + return 1; + } + /* Get full information about the string. This means we get information for all passes in a special data structure. */ get_string (src, forw, backw); |