diff options
| author | Paul Eggert | 2014-08-29 13:16:40 -0700 |
|---|---|---|
| committer | Paul Eggert | 2014-08-29 13:16:40 -0700 |
| commit | 7421589fc82419836e701e0cd95b1cdf0df37319 (patch) | |
| tree | feeb0b62e9a3faddc1579a5282cb9776100ab6f5 /src | |
| parent | 21ba51de76390907ca86b1e7715f472dd740fbc3 (diff) | |
| download | emacs-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/ChangeLog | 7 | ||||
| -rw-r--r-- | 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 @@ | |||
| 1 | 2014-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 | |||
| 1 | 2014-08-29 Eli Zaretskii <eliz@gnu.org> | 8 | 2014-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 | } |