From 7421589fc82419836e701e0cd95b1cdf0df37319 Mon Sep 17 00:00:00 2001 From: Paul Eggert <eggert@cs.ucla.edu> Date: Fri, 29 Aug 2014 13:16:40 -0700 Subject: [PATCH] * 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. --- src/ChangeLog | 7 +++++++ src/sysdep.c | 12 ++---------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 181a43d058f..81381168c0c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +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. + 2014-08-29 Eli Zaretskii <eliz@gnu.org> * fns.c (Fstring_collate_lessp, Fstring_collate_equalp): Doc fix. diff --git a/src/sysdep.c b/src/sysdep.c index 52a72385f46..d36f5b29b08 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -3746,24 +3746,16 @@ str_collate (Lisp_Object s1, Lisp_Object s2, SSDATA (locale), 0); if (!loc) error ("Wrong locale: %s", strerror (errno)); - errno = 0; if (! NILP (ignore_case)) for (int i = 1; i < 3; i++) { wchar_t *p = (i == 1) ? p1 : p2; for (; *p; p++) - { - *p = towlower_l (*p, loc); - if (errno) - break; - } - if (errno) - break; + *p = towlower_l (*p, loc); } - if (! errno) - res = wcscoll_l (p1, p2, loc); + res = wcscoll_l (p1, p2, loc); err = errno; freelocale (loc); } -- 2.39.5