diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2011-05-16 18:58:43 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2011-06-06 16:26:11 +0200 |
commit | b4b816449a5c6c6b24fb70cc44e53c2c6b640758 (patch) | |
tree | dce1b2bc7dc378adfd2d45672fe43bc0bbb872f8 | |
parent | 56bd5028a527f8521b6df3dd963a9c02c08dbb79 (diff) |
core: ensure ERROR_REMOVED error is used in MMCallbackInfo when detecting modem removal
-rw-r--r-- | src/mm-callback-info.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/mm-callback-info.c b/src/mm-callback-info.c index aa1f13ab..a230e690 100644 --- a/src/mm-callback-info.c +++ b/src/mm-callback-info.c @@ -47,19 +47,24 @@ invoke_mm_modem_string_fn (MMCallbackInfo *info) info->error, info->user_data); } - static void modem_destroyed_cb (gpointer data, GObject *destroyed) { MMCallbackInfo *info = data; + /* Reset modem pointer, so that callback know that they shouldn't do + * anything else */ info->modem = NULL; - if (!info->pending_id) { - info->error = g_error_new_literal (MM_MODEM_ERROR, - MM_MODEM_ERROR_REMOVED, - "The modem was removed."); + + /* Overwrite any possible previous error set */ + g_clear_error (&(info->error)); + info->error = g_error_new_literal (MM_MODEM_ERROR, + MM_MODEM_ERROR_REMOVED, + "The modem was removed."); + + /* Only schedule the info if not already done before */ + if (!info->pending_id) mm_callback_info_schedule (info); - } } static void |