diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-02-04 12:58:18 -0600 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-02-04 13:49:33 -0600 |
commit | 4822b21b4da3394b9ad71f44ff645b71c053b4fd (patch) | |
tree | e6358fab88595377a846625f4c34af8519d8b4fc | |
parent | 1cd4bf036f089446e079601b7157ea88172722a1 (diff) | |
download | ofono-4822b21b4da3394b9ad71f44ff645b71c053b4fd.tar.bz2 |
Cleanup: Modem creation
-rw-r--r-- | plugins/hfp.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/plugins/hfp.c b/plugins/hfp.c index 24cc127a..5fe6a2c1 100644 --- a/plugins/hfp.c +++ b/plugins/hfp.c @@ -428,10 +428,12 @@ static int hfp_create_modem(const char *device) ofono_info("Using device: %s", device); modem = ofono_modem_create(NULL, "hfp"); + if (modem == NULL) + return -ENOMEM; data = g_try_new0(struct hfp_data, 1); if (!data) - return -ENOMEM; + goto free; data->hf_features |= HF_FEATURE_3WAY; data->hf_features |= HF_FEATURE_CLIP; @@ -440,12 +442,19 @@ static int hfp_create_modem(const char *device) data->hf_features |= HF_FEATURE_ENHANCED_CALL_CONTROL; data->handsfree_path = g_strdup(device); + if (data->handsfree_path == NULL) + goto free; ofono_modem_set_data(modem, data); - ofono_modem_register(modem); return 0; + +free: + g_free(data); + ofono_modem_remove(modem); + + return -ENOMEM; } static void parse_uuids(DBusMessageIter *i, const char *device) |