aboutsummaryrefslogtreecommitdiffstats
path: root/src/sysdep.c
diff options
context:
space:
mode:
authorPaul Eggert2014-08-30 09:47:19 -0700
committerPaul Eggert2014-08-30 09:47:19 -0700
commit88366fcf88e5bccc4d0bcff798beb3ef27aaa496 (patch)
treed9ef8381d75ea4f014fd2f0517594a0c609439db /src/sysdep.c
parent4051f5379cea70610814c61cfa581d9b235ecc46 (diff)
downloademacs-88366fcf88e5bccc4d0bcff798beb3ef27aaa496.tar.gz
emacs-88366fcf88e5bccc4d0bcff798beb3ef27aaa496.zip
* sysdep.c (str_collate): Clear errno just before wcscoll(_l).
One can't hoist this out of the 'if', because intervening calls to newlocale, twolower, etc. can change errno.
Diffstat (limited to 'src/sysdep.c')
-rw-r--r--src/sysdep.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/sysdep.c b/src/sysdep.c
index 8b62c8c4f62..34fd8b1044b 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -3740,8 +3740,6 @@ str_collate (Lisp_Object s1, Lisp_Object s2,
3740 FETCH_STRING_CHAR_ADVANCE (*(p2+i-1), s2, i, i_byte); 3740 FETCH_STRING_CHAR_ADVANCE (*(p2+i-1), s2, i, i_byte);
3741 *(p2+len) = 0; 3741 *(p2+len) = 0;
3742 3742
3743 errno = 0;
3744
3745 if (STRINGP (locale)) 3743 if (STRINGP (locale))
3746 { 3744 {
3747 locale_t loc = newlocale (LC_COLLATE_MASK | LC_CTYPE_MASK, 3745 locale_t loc = newlocale (LC_COLLATE_MASK | LC_CTYPE_MASK,
@@ -3757,6 +3755,7 @@ str_collate (Lisp_Object s1, Lisp_Object s2,
3757 *p = towlower_l (*p, loc); 3755 *p = towlower_l (*p, loc);
3758 } 3756 }
3759 3757
3758 errno = 0;
3760 res = wcscoll_l (p1, p2, loc); 3759 res = wcscoll_l (p1, p2, loc);
3761 err = errno; 3760 err = errno;
3762 freelocale (loc); 3761 freelocale (loc);
@@ -3771,6 +3770,7 @@ str_collate (Lisp_Object s1, Lisp_Object s2,
3771 *p = towlower (*p); 3770 *p = towlower (*p);
3772 } 3771 }
3773 3772
3773 errno = 0;
3774 res = wcscoll (p1, p2); 3774 res = wcscoll (p1, p2);
3775 err = errno; 3775 err = errno;
3776 } 3776 }