aboutsummaryrefslogtreecommitdiff
path: root/src/mm-sms-part-cdma.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-sms-part-cdma.c
parenta2b57474dc60759416bc2a5a8808806fd3317c01 (diff)
charsets: report GError in byte_array_append() failures
Diffstat (limited to 'src/mm-sms-part-cdma.c')
-rw-r--r--src/mm-sms-part-cdma.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/src/mm-sms-part-cdma.c b/src/mm-sms-part-cdma.c
index 96302261..2903e846 100644
--- a/src/mm-sms-part-cdma.c
+++ b/src/mm-sms-part-cdma.c
@@ -1377,14 +1377,16 @@ write_bearer_data_message_identifier (MMSmsPart *part,
static void
decide_best_encoding (const gchar *text,
+ gpointer log_object,
GByteArray **out,
- guint *num_fields,
- guint *num_bits_per_field,
- Encoding *encoding)
+ guint *num_fields,
+ guint *num_bits_per_field,
+ Encoding *encoding)
{
guint ascii_unsupported = 0;
guint i;
guint len;
+ g_autoptr(GError) error = NULL;
len = strlen (text);
@@ -1409,10 +1411,12 @@ decide_best_encoding (const gchar *text,
/* Check if we can do Latin encoding */
if (mm_charset_can_convert_to (text, MM_MODEM_CHARSET_8859_1)) {
*out = g_byte_array_sized_new (len);
- mm_modem_charset_byte_array_append (*out,
- text,
- FALSE,
- MM_MODEM_CHARSET_8859_1);
+ if (!mm_modem_charset_byte_array_append (*out,
+ text,
+ FALSE,
+ MM_MODEM_CHARSET_8859_1,
+ &error))
+ mm_obj_warn (log_object, "failed to convert to latin encoding: %s", error->message);
*num_fields = (*out)->len;
*num_bits_per_field = 8;
*encoding = ENCODING_LATIN;
@@ -1421,10 +1425,12 @@ decide_best_encoding (const gchar *text,
/* If no Latin and no ASCII, default to UTF-16 */
*out = g_byte_array_sized_new (len * 2);
- mm_modem_charset_byte_array_append (*out,
- text,
- FALSE,
- MM_MODEM_CHARSET_UCS2);
+ if (!mm_modem_charset_byte_array_append (*out,
+ text,
+ FALSE,
+ MM_MODEM_CHARSET_UCS2,
+ &error))
+ mm_obj_warn (log_object, "failed to convert to UTF-16 encoding: %s", error->message);
*num_fields = (*out)->len / 2;
*num_bits_per_field = 16;
*encoding = ENCODING_UNICODE;
@@ -1472,6 +1478,7 @@ write_bearer_data_user_data (MMSmsPart *part,
/* Text or Data */
if (text) {
decide_best_encoding (text,
+ log_object,
&converted,
&num_fields,
&num_bits_per_field,