diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-08-20 19:56:05 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-10-25 19:47:20 +0200 |
commit | 663017a3d20f3beeff12bd5b56f730c6b43eee32 (patch) | |
tree | 5a0b4295175f9aa4114e34c447017b03ded44bfb | |
parent | bd05787b51ba1806850a365bc7d08088a2109c2a (diff) | |
download | ModemManager-663017a3d20f3beeff12bd5b56f730c6b43eee32.tar.gz |
sms: clear generated parts when storing/sending fails
-rw-r--r-- | src/mm-sms.c | 14 |
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) { |