Don't modify errno. (#116617, Balazs Scheidler)
authorMatthias Clasen <maclas@gmx.de>
Thu, 26 Feb 2004 23:43:45 +0000 (23:43 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Thu, 26 Feb 2004 23:43:45 +0000 (23:43 +0000)
Fri Feb 27 00:46:29 2004  Matthias Clasen  <maclas@gmx.de>

* glib/gstrfuncs.c (g_strerror): Don't modify errno.  (#116617,
Balazs Scheidler)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
glib/gstrfuncs.c

index aa8ba00..7191a35 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Feb 27 00:46:29 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/gstrfuncs.c (g_strerror): Don't modify errno.  (#116617, 
+       Balazs Scheidler)
+
 2004-02-26  Sebastian Wilhelmi  <seppi@seppi.de>
 
        * glib/gatomic.h: Fix the !G_THREADS_ENABLED case.
index aa8ba00..7191a35 100644 (file)
@@ -1,3 +1,8 @@
+Fri Feb 27 00:46:29 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/gstrfuncs.c (g_strerror): Don't modify errno.  (#116617, 
+       Balazs Scheidler)
+
 2004-02-26  Sebastian Wilhelmi  <seppi@seppi.de>
 
        * glib/gatomic.h: Fix the !G_THREADS_ENABLED case.
index aa8ba00..7191a35 100644 (file)
@@ -1,3 +1,8 @@
+Fri Feb 27 00:46:29 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/gstrfuncs.c (g_strerror): Don't modify errno.  (#116617, 
+       Balazs Scheidler)
+
 2004-02-26  Sebastian Wilhelmi  <seppi@seppi.de>
 
        * glib/gatomic.h: Fix the !G_THREADS_ENABLED case.
index aa8ba00..7191a35 100644 (file)
@@ -1,3 +1,8 @@
+Fri Feb 27 00:46:29 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/gstrfuncs.c (g_strerror): Don't modify errno.  (#116617, 
+       Balazs Scheidler)
+
 2004-02-26  Sebastian Wilhelmi  <seppi@seppi.de>
 
        * glib/gatomic.h: Fix the !G_THREADS_ENABLED case.
index aa8ba00..7191a35 100644 (file)
@@ -1,3 +1,8 @@
+Fri Feb 27 00:46:29 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/gstrfuncs.c (g_strerror): Don't modify errno.  (#116617, 
+       Balazs Scheidler)
+
 2004-02-26  Sebastian Wilhelmi  <seppi@seppi.de>
 
        * glib/gatomic.h: Fix the !G_THREADS_ENABLED case.
index aa8ba00..7191a35 100644 (file)
@@ -1,3 +1,8 @@
+Fri Feb 27 00:46:29 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * glib/gstrfuncs.c (g_strerror): Don't modify errno.  (#116617, 
+       Balazs Scheidler)
+
 2004-02-26  Sebastian Wilhelmi  <seppi@seppi.de>
 
        * glib/gatomic.h: Fix the !G_THREADS_ENABLED case.
index c485494..e28f93b 100644 (file)
@@ -727,13 +727,17 @@ g_strerror (gint errnum)
 {
   static GStaticPrivate msg_private = G_STATIC_PRIVATE_INIT;
   char *msg;
+  int saved_errno = errno;
 
 #ifdef HAVE_STRERROR
   const char *msg_locale;
 
   msg_locale = strerror (errnum);
   if (g_get_charset (NULL))
-    return msg_locale;
+    {
+      errno = saved_errno;
+      return msg_locale;
+    }
   else
     {
       gchar *msg_utf8 = g_locale_to_utf8 (msg_locale, -1, NULL, NULL, NULL);
@@ -744,7 +748,9 @@ g_strerror (gint errnum)
          GQuark msg_quark = g_quark_from_string (msg_utf8);
          g_free (msg_utf8);
          
-         return g_quark_to_string (msg_quark);
+         msg_utf8 = (gchar *) g_quark_to_string (msg_quark);
+         errno = saved_errno;
+         return msg_utf8;
        }
     }
 #elif NO_SYS_ERRLIST
@@ -1179,6 +1185,7 @@ g_strerror (gint errnum)
 
   _g_sprintf (msg, "unknown error (%d)", errnum);
 
+  errno = saved_errno;
   return msg;
 }