---
drivers/stemodem/radio-settings.c | 33 +++++++++++++++++++--------------
1 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/drivers/stemodem/radio-settings.c b/drivers/stemodem/radio-settings.c
index 5b50126..337a19c 100644
--- a/drivers/stemodem/radio-settings.c
+++ b/drivers/stemodem/radio-settings.c
@@ -139,11 +139,13 @@ static void ste_query_rat_mode(struct ofono_radio_settings *rs,
struct radio_settings_data *rsd = ofono_radio_settings_get_data(rs);
struct cb_data *cbd = cb_data_new(cb, data);
- if (g_at_chat_send(rsd->chat, "AT+CFUN?", cfun_prefix,
- rat_query_cb, cbd, g_free) == 0) {
- CALLBACK_WITH_FAILURE(cb, -1, data);
- g_free(cbd);
- }
+ if (cbd && g_at_chat_send(rsd->chat, "AT+CFUN?", cfun_prefix,
+ rat_query_cb, cbd, g_free) > 0)
+ return;
+
+ g_free(cbd);
+
+ CALLBACK_WITH_FAILURE(cb, -1, data);
}
static void rat_modify_cb(gboolean ok, GAtResult *result, gpointer user_data)
@@ -172,19 +174,22 @@ static void ste_set_rat_mode(struct ofono_radio_settings *rs,
char buf[20];
enum ste_radio_mode value;
- if (!ofono_mode_to_ste_mode(mode, &value)) {
- CALLBACK_WITH_FAILURE(cb, data);
- g_free(cbd);
- return;
- }
+ if (cbd == NULL)
+ goto error;
+
+ if (!ofono_mode_to_ste_mode(mode, &value))
+ goto error;
snprintf(buf, sizeof(buf), "AT+CFUN=%u", value);
if (g_at_chat_send(rsd->chat, buf, none_prefix,
- rat_modify_cb, cbd, g_free) == 0) {
- CALLBACK_WITH_FAILURE(cb, data);
- g_free(cbd);
- }
+ rat_modify_cb, cbd, g_free) > 0)
+ return;
+
+error:
+ g_free(cbd);
+
+ CALLBACK_WITH_FAILURE(cb, data);
}
static int ste_radio_settings_probe(struct ofono_radio_settings *rs,
--
1.7.0.4