aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2014-08-29 13:16:40 -0700
committerPaul Eggert2014-08-29 13:16:40 -0700
commit7421589fc82419836e701e0cd95b1cdf0df37319 (patch)
treefeeb0b62e9a3faddc1579a5282cb9776100ab6f5 /src
parent21ba51de76390907ca86b1e7715f472dd740fbc3 (diff)
downloademacs-7421589fc82419836e701e0cd95b1cdf0df37319.tar.gz
emacs-7421589fc82419836e701e0cd95b1cdf0df37319.zip
* 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.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog7
-rw-r--r--src/sysdep.c12
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 @@
12014-08-29 Paul Eggert <eggert@cs.ucla.edu>
2
3 * sysdep.c (str_collate): Do not look at errno after towlower_l.
4 errno's value is not specified after towlower_l. Instead, assume
5 that towlower_l returns its argument on failure, which is portable
6 in practice.
7
12014-08-29 Eli Zaretskii <eliz@gnu.org> 82014-08-29 Eli Zaretskii <eliz@gnu.org>
2 9
3 * fns.c (Fstring_collate_lessp, Fstring_collate_equalp): Doc fix. 10 * 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,
3746 SSDATA (locale), 0); 3746 SSDATA (locale), 0);
3747 if (!loc) 3747 if (!loc)
3748 error ("Wrong locale: %s", strerror (errno)); 3748 error ("Wrong locale: %s", strerror (errno));
3749 errno = 0;
3750 3749
3751 if (! NILP (ignore_case)) 3750 if (! NILP (ignore_case))
3752 for (int i = 1; i < 3; i++) 3751 for (int i = 1; i < 3; i++)
3753 { 3752 {
3754 wchar_t *p = (i == 1) ? p1 : p2; 3753 wchar_t *p = (i == 1) ? p1 : p2;
3755 for (; *p; p++) 3754 for (; *p; p++)
3756 { 3755 *p = towlower_l (*p, loc);
3757 *p = towlower_l (*p, loc);
3758 if (errno)
3759 break;
3760 }
3761 if (errno)
3762 break;
3763 } 3756 }
3764 3757
3765 if (! errno) 3758 res = wcscoll_l (p1, p2, loc);
3766 res = wcscoll_l (p1, p2, loc);
3767 err = errno; 3759 err = errno;
3768 freelocale (loc); 3760 freelocale (loc);
3769 } 3761 }