From: Christian Persch Date: Mon, 16 Jun 2008 16:41:01 +0000 (+0000) Subject: Add g_set_error_literal. Bug #535947. X-Git-Tag: GLIB_2_17_3~77 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9c50d657e5e4e71b7978837b066e24374b3bb32a;p=platform%2Fupstream%2Fglib.git Add g_set_error_literal. Bug #535947. svn path=/trunk/; revision=7050 --- diff --git a/ChangeLog b/ChangeLog index d45bb41..e44f4f7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-06-16 Christian Persch + + * docs/reference/glib/glib-sections.txt: + * glib/gerror.c: + * glib/gerror.h: + * glib/glib.symbols: Add g_set_error_literal. Bug #535947. + 2008-06-16 Michael Natterer * glib/goption.c (dgettext_swapped): changed return value to diff --git a/docs/reference/glib/glib-sections.txt b/docs/reference/glib/glib-sections.txt index da1a67d..577929b 100644 --- a/docs/reference/glib/glib-sections.txt +++ b/docs/reference/glib/glib-sections.txt @@ -386,6 +386,7 @@ g_error_free g_error_copy g_error_matches g_set_error +g_set_error_literal g_propagate_error g_clear_error g_prefix_error diff --git a/glib/gerror.c b/glib/gerror.c index 9756a3e..dfb52fe 100644 --- a/glib/gerror.c +++ b/glib/gerror.c @@ -212,6 +212,37 @@ g_set_error (GError **err, } /** + * g_set_error_literal: + * @err: a return location for a #GError, or %NULL + * @domain: error domain + * @code: error code + * @message: error message + * + * Does nothing if @err is %NULL; if @err is non-%NULL, then *@err must + * be %NULL. A new #GError is created and assigned to *@err. + * Unlike g_set_error(), @message is not a printf()-style format string. + * Use this function if @message contains text you don't have control over, + * that could include printf() escape sequences. + **/ +void +g_set_error_literal (GError **err, + GQuark domain, + gint code, + const gchar *message) +{ + GError *new; + + if (err == NULL) + return; + + new = g_error_new_literal (domain, code, message); + if (*err == NULL) + *err = new; + else + g_warning (ERROR_OVERWRITTEN_WARNING, new->message); +} + +/** * g_propagate_error: * @dest: error return location * @src: error to move into the return location diff --git a/glib/gerror.h b/glib/gerror.h index cd5aa24..d3d42d5 100644 --- a/glib/gerror.h +++ b/glib/gerror.h @@ -63,6 +63,11 @@ void g_set_error (GError **err, const gchar *format, ...) G_GNUC_PRINTF (4, 5); +void g_set_error_literal (GError **err, + GQuark domain, + gint code, + const gchar *message); + /* if (dest) *dest = src; also has some sanity checks. */ void g_propagate_error (GError **dest, diff --git a/glib/glib.symbols b/glib/glib.symbols index c201aed..305db1d 100644 --- a/glib/glib.symbols +++ b/glib/glib.symbols @@ -336,6 +336,7 @@ g_error_new G_GNUC_PRINTF(3,4) g_error_new_literal g_propagate_error g_set_error G_GNUC_PRINTF(4,5) +g_set_error_literal g_prefix_error G_GNUC_PRINTF(2,3) g_propagate_prefixed_error G_GNUC_PRINTF(3,4) #endif