aboutsummaryrefslogtreecommitdiff
path: root/src/mm-sms.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-sms.c')
-rw-r--r--src/mm-sms.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/mm-sms.c b/src/mm-sms.c
index f3f89871..d32b4aa4 100644
--- a/src/mm-sms.c
+++ b/src/mm-sms.c
@@ -982,14 +982,17 @@ assemble_sms (MMSms *self,
return FALSE;
}
+ /* When the user creates the SMS, it will have either 'text' or 'data',
+ * not both */
+
parttext = mm_sms_part_get_text (sorted_parts[idx]);
partdata = mm_sms_part_get_data (sorted_parts[idx]);
- if (!parttext || !partdata) {
+ if (!parttext && !partdata) {
g_set_error (error,
MM_CORE_ERROR,
MM_CORE_ERROR_FAILED,
- "Cannot assemble SMS, part at index (%u) has no text or data",
+ "Cannot assemble SMS, part at index (%u) has neither text nor data",
idx);
g_string_free (fulltext, TRUE);
g_byte_array_free (fulldata, TRUE);
@@ -997,8 +1000,10 @@ assemble_sms (MMSms *self,
return FALSE;
}
- g_string_append (fulltext, parttext);
- g_byte_array_append (fulldata, partdata->data, partdata->len);
+ if (parttext)
+ g_string_append (fulltext, parttext);
+ if (partdata)
+ g_byte_array_append (fulldata, partdata->data, partdata->len);
}
/* If we got all parts, we also have the first one always */
@@ -1207,6 +1212,7 @@ mm_sms_new_from_properties (MMBaseModem *modem,
part = mm_sms_part_new (SMS_PART_INVALID_INDEX);
mm_sms_part_set_text (part, mm_sms_properties_get_text (properties));
+ mm_sms_part_take_data (part, mm_sms_properties_get_data_bytearray (properties));
mm_sms_part_set_number (part, mm_sms_properties_get_number (properties));
mm_sms_part_set_smsc (part, mm_sms_properties_get_smsc (properties));
mm_sms_part_set_validity (part, mm_sms_properties_get_validity (properties));