aboutsummaryrefslogtreecommitdiff
path: root/src/mm-charsets.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2020-04-04 14:51:22 +0200
committerAleksander Morgado <aleksander@aleksander.es>2020-04-08 16:35:09 +0200
commit2376859f36f56b2a63f8f6c13094aad0b129b279 (patch)
treeba7235770da4e181ab09705c9cb29f1f39549ec0 /src/mm-charsets.c
parenta2b57474dc60759416bc2a5a8808806fd3317c01 (diff)
charsets: report GError in byte_array_append() failures
Diffstat (limited to 'src/mm-charsets.c')
-rw-r--r--src/mm-charsets.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/src/mm-charsets.c b/src/mm-charsets.c
index a5c70165..bf0de2b2 100644
--- a/src/mm-charsets.c
+++ b/src/mm-charsets.c
@@ -112,29 +112,26 @@ charset_iconv_from (MMModemCharset charset)
}
gboolean
-mm_modem_charset_byte_array_append (GByteArray *array,
- const char *utf8,
- gboolean quoted,
- MMModemCharset charset)
+mm_modem_charset_byte_array_append (GByteArray *array,
+ const gchar *utf8,
+ gboolean quoted,
+ MMModemCharset charset,
+ GError **error)
{
- const char *iconv_to;
- char *converted;
- GError *error = NULL;
- gsize written = 0;
+ g_autofree gchar *converted = NULL;
+ const gchar *iconv_to;
+ gsize written = 0;
g_return_val_if_fail (array != NULL, FALSE);
g_return_val_if_fail (utf8 != NULL, FALSE);
iconv_to = charset_iconv_to (charset);
- g_return_val_if_fail (iconv_to != NULL, FALSE);
+ g_assert (iconv_to);
- converted = g_convert (utf8, -1, iconv_to, "UTF-8", NULL, &written, &error);
+ converted = g_convert (utf8, -1, iconv_to, "UTF-8", NULL, &written, error);
if (!converted) {
- if (error) {
- mm_warn ("failed to convert '%s' to %s character set: (%d) %s",
- utf8, iconv_to, error->code, error->message);
- g_error_free (error);
- }
+ g_prefix_error (error, "Failed to convert '%s' to %s character set",
+ utf8, iconv_to);
return FALSE;
}
@@ -144,7 +141,6 @@ mm_modem_charset_byte_array_append (GByteArray *array,
if (quoted)
g_byte_array_append (array, (const guint8 *) "\"", 1);
- g_free (converted);
return TRUE;
}