summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2013-08-20 19:56:05 +0200
committerAleksander Morgado <aleksander@lanedo.com>2013-10-25 19:47:20 +0200
commit663017a3d20f3beeff12bd5b56f730c6b43eee32 (patch)
tree5a0b4295175f9aa4114e34c447017b03ded44bfb
parentbd05787b51ba1806850a365bc7d08088a2109c2a (diff)
downloadModemManager-663017a3d20f3beeff12bd5b56f730c6b43eee32.tar.gz
sms: clear generated parts when storing/sending fails
-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 caf66d32d..b225ea2ce 100644
--- a/src/mm-sms.c
+++ b/src/mm-sms.c
@@ -322,9 +322,12 @@ handle_store_ready (MMSms *self,
{
GError *error = NULL;
- if (!MM_SMS_GET_CLASS (self)->store_finish (self, res, &error))
+ if (!MM_SMS_GET_CLASS (self)->store_finish (self, res, &error)) {
+ /* On error, clear up the parts we generated */
+ g_list_free_full (self->priv->parts, (GDestroyNotify)mm_sms_part_free);
+ self->priv->parts = NULL;
g_dbus_method_invocation_take_error (ctx->invocation, error);
- else {
+ } else {
mm_gdbus_sms_set_storage (MM_GDBUS_SMS (ctx->self), ctx->storage);
/* Transition from Unknown->Stored for SMS which were created by the user */
@@ -493,9 +496,12 @@ handle_send_ready (MMSms *self,
{
GError *error = NULL;
- if (!MM_SMS_GET_CLASS (self)->send_finish (self, res, &error))
+ if (!MM_SMS_GET_CLASS (self)->send_finish (self, res, &error)) {
+ /* On error, clear up the parts we generated */
+ g_list_free_full (self->priv->parts, (GDestroyNotify)mm_sms_part_free);
+ self->priv->parts = NULL;
g_dbus_method_invocation_take_error (ctx->invocation, error);
- else {
+ } else {
/* Transition from Unknown->Sent or Stored->Sent */
if (mm_gdbus_sms_get_state (MM_GDBUS_SMS (ctx->self)) == MM_SMS_STATE_UNKNOWN ||
mm_gdbus_sms_get_state (MM_GDBUS_SMS (ctx->self)) == MM_SMS_STATE_STORED) {