summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog12
-rw-r--r--src/sysdep.c4
2 files changed, 11 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 81381168c0c..19e9985b082 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,9 +1,13 @@
+2014-08-29 Michael Albinus <michael.albinus@gmx.de>
+
+ * sysdep.c (str_collate) [__STDC_ISO_10646__]: Move up setting errno.
+
2014-08-29 Paul Eggert <eggert@cs.ucla.edu>
- * sysdep.c (str_collate): Do not look at errno after towlower_l.
- errno's value is not specified after towlower_l. Instead, assume
- that towlower_l returns its argument on failure, which is portable
- in practice.
+ * sysdep.c (str_collate) [__STDC_ISO_10646__]: Do not look at
+ errno after towlower_l. errno's value is not specified after
+ towlower_l. Instead, assume that towlower_l returns its argument
+ on failure, which is portable in practice.
2014-08-29 Eli Zaretskii <eliz@gnu.org>
diff --git a/src/sysdep.c b/src/sysdep.c
index d36f5b29b08..e1da2f87eb2 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -3740,6 +3740,8 @@ str_collate (Lisp_Object s1, Lisp_Object s2,
FETCH_STRING_CHAR_ADVANCE (*(p2+i-1), s2, i, i_byte);
*(p2+len) = 0;
+ errno = 0;
+
if (STRINGP (locale))
{
locale_t loc = newlocale (LC_COLLATE_MASK | LC_CTYPE_MASK,
@@ -3761,7 +3763,6 @@ str_collate (Lisp_Object s1, Lisp_Object s2,
}
else
{
- errno = 0;
if (! NILP (ignore_case))
for (int i = 1; i < 3; i++)
{
@@ -3769,6 +3770,7 @@ str_collate (Lisp_Object s1, Lisp_Object s2,
for (; *p; p++)
*p = towlower (*p);
}
+
res = wcscoll (p1, p2);
err = errno;
}