From 105ca06da20c40d844be61681d741ecd9619bc12 Mon Sep 17 00:00:00 2001 From: drepper Date: Wed, 22 Jul 1998 16:52:22 +0000 Subject: [PATCH] Correct problem with empty strings. --- string/strcoll.c | 6 ++++++ string/strxfrm.c | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) 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 , 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); -- 2.11.0