]> code.delx.au - gnu-emacs/commitdiff
* sysdep.c (str_collate): Do not look at errno after towlower_l.
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 29 Aug 2014 20:16:40 +0000 (13:16 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 29 Aug 2014 20:16:40 +0000 (13:16 -0700)
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
src/sysdep.c

index 181a43d058f4747aa24bdfc7a7e8429f64cce524..81381168c0c09594208ad701032f612627b93450 100644 (file)
@@ -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.
index 52a72385f4643103f14c38e98c3b4ef2aca2b52c..d36f5b29b08d86983761fb5bb6a132839b58a9cc 100644 (file)
@@ -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);
     }