unistr/u*-strcoll: Try harder to distinguish different strings.
authorBruno Haible <bruno@clisp.org>
Sun, 10 Jan 2010 22:11:54 +0000 (23:11 +0100)
committerBruno Haible <bruno@clisp.org>
Sun, 10 Jan 2010 22:11:54 +0000 (23:11 +0100)
ChangeLog
lib/unistr/u-strcoll.h

index f1f514a1293c897e3c360b7400500fc4ad83491d..6d90821562c40daa6a2f6ff3358c0627cd8f84ce 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-01-10  Bruno Haible  <bruno@clisp.org>
+
+       unistr/u*-strcoll: Try harder to distinguish different strings.
+       * lib/unistr/u-strcoll.h (FUNC): When sl1 and sl2 are the same,
+       compare s1 and s2 to see if they are different.
+
 2010-01-10  Bruno Haible  <bruno@clisp.org>
 
        unistr/u*-stpncpy: Fix the return value.
index e1dc713819f07876d7aa4ed5eb3ccc6ba9ed1076..9ec5c60170bc5356fad99848b7b8b27451b9900f 100644 (file)
@@ -41,6 +41,12 @@ FUNC (const UNIT *s1, const UNIT *s2)
               /* strcoll succeeded.  */
               free (sl1);
               free (sl2);
+              /* The conversion to locale encoding can do transliteration or
+                 map some characters to question marks.  Therefore sl1 and sl2
+                 may be equal when s1 and s2 were in fact different.  Return a
+                 nonzero result in this case.  */
+              if (result == 0)
+                result = U_STRCMP (s1, s2);
             }
           else
             {