]> git.eshelyaron.com Git - emacs.git/commitdiff
* sysdep.c (str_collate): Clear errno just before wcscoll(_l).
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 30 Aug 2014 16:47:19 +0000 (09:47 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 30 Aug 2014 16:47:19 +0000 (09:47 -0700)
One can't hoist this out of the 'if', because intervening calls to
newlocale, twolower, etc. can change errno.

src/ChangeLog
src/sysdep.c

index dece8255a057e6d63d888aa44f54be11c37f89d4..b348932f0a93c6d1cf5dc68de4a9df9592e5650f 100644 (file)
@@ -1,3 +1,9 @@
+2014-08-30  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * 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.
+
 2014-08-30  Eli Zaretskii  <eliz@gnu.org>
 
        * sysdep.c (str_collate) [__STDC_ISO_10646__]: Improve the
index 8b62c8c4f623e053b3e5768c138bca822cd31566..34fd8b1044b19377288c0e1b9ed9fabc3ebe6c58 100644 (file)
@@ -3740,8 +3740,6 @@ 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,
@@ -3757,6 +3755,7 @@ str_collate (Lisp_Object s1, Lisp_Object s2,
              *p = towlower_l (*p, loc);
          }
 
+      errno = 0;
       res = wcscoll_l (p1, p2, loc);
       err = errno;
       freelocale (loc);
@@ -3771,6 +3770,7 @@ str_collate (Lisp_Object s1, Lisp_Object s2,
              *p = towlower (*p);
          }
 
+      errno = 0;
       res = wcscoll (p1, p2);
       err = errno;
     }