diff options
-rw-r--r-- | src/ChangeLog | 12 | ||||
-rw-r--r-- | src/sysdep.c | 4 |
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; } |