changeset 12624:91e18087c6ac

unistr/u*-strcoll: Try harder to distinguish different strings.
author Bruno Haible <bruno@clisp.org>
date Sun, 10 Jan 2010 23:11:54 +0100
parents b982684dce8f
children 8314fb7892a5
files ChangeLog lib/unistr/u-strcoll.h
diffstat 2 files changed, 12 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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.
--- a/lib/unistr/u-strcoll.h
+++ b/lib/unistr/u-strcoll.h
@@ -41,6 +41,12 @@
               /* 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
             {