summaryrefslogtreecommitdiff
path: root/glib/gconvert.c
diff options
context:
space:
mode:
authorChristian Persch <chpe@gnome.org>2009-08-20 15:13:43 +0200
committerChristian Persch <chpe@gnome.org>2009-08-22 15:08:43 +0200
commit8ef30758d56b21aa20c23e5c90a78142183003ed (patch)
treef2de0445312ea66bd2368f3692bda1b3705de555 /glib/gconvert.c
parentfeff29aefc75459bc1b39235cb0e842fbf0fa2b4 (diff)
downloadglib-8ef30758d56b21aa20c23e5c90a78142183003ed.tar.gz
Preserve errno
When using errno in g_set_error with _(), preserve errno. Bug #592457.
Diffstat (limited to 'glib/gconvert.c')
-rw-r--r--glib/gconvert.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/glib/gconvert.c b/glib/gconvert.c
index 7aefe24f3..7a20cb56a 100644
--- a/glib/gconvert.c
+++ b/glib/gconvert.c
@@ -633,10 +633,13 @@ g_convert_with_iconv (const gchar *str,
have_error = TRUE;
break;
default:
- if (error)
- g_set_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_FAILED,
- _("Error during conversion: %s"),
- g_strerror (errno));
+ {
+ int errsv = errno;
+
+ g_set_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_FAILED,
+ _("Error during conversion: %s"),
+ g_strerror (errsv));
+ }
have_error = TRUE;
break;
}
@@ -940,9 +943,14 @@ g_convert_with_fallback (const gchar *str,
}
/* fall thru if p is NULL */
default:
- g_set_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_FAILED,
- _("Error during conversion: %s"),
- g_strerror (errno));
+ {
+ int errsv = errno;
+
+ g_set_error (error, G_CONVERT_ERROR, G_CONVERT_ERROR_FAILED,
+ _("Error during conversion: %s"),
+ g_strerror (errsv));
+ }
+
have_error = TRUE;
break;
}