stemodem: Use g_at_chat_clone
authorDenis Kenzior <denkenz@gmail.com>
Fri, 13 Aug 2010 04:44:07 +0000 (23:44 -0500)
committerDenis Kenzior <denkenz@gmail.com>
Fri, 13 Aug 2010 04:44:07 +0000 (23:44 -0500)
drivers/stemodem/gprs-context.c
drivers/stemodem/voicecall.c

index 7ac07c9..ace9d6e 100644 (file)
@@ -512,7 +512,7 @@ static int ste_gprs_context_probe(struct ofono_gprs_context *gc,
        int i;
 
        gcd = g_new0(struct gprs_context_data, 1);
-       gcd->chat = chat;
+       gcd->chat = g_at_chat_clone(chat);
 
        g_at_chat_register(gcd->chat, "+CGEV:", cgev_notify, FALSE, gc, NULL);
 
@@ -536,6 +536,8 @@ static void ste_gprs_context_remove(struct ofono_gprs_context *gc)
        g_caif_devices = NULL;
 
        ofono_gprs_context_set_data(gc, NULL);
+
+       g_at_chat_unref(gcd->chat);
        g_free(gcd);
 }
 
index daadf54..db3b721 100644 (file)
@@ -540,12 +540,12 @@ static int ste_voicecall_probe(struct ofono_voicecall *vc, unsigned int vendor,
        struct voicecall_data *vd;
 
        vd = g_new0(struct voicecall_data, 1);
-       vd->chat = chat;
+       vd->chat = g_at_chat_clone(chat);
 
        ofono_voicecall_set_data(vc, vd);
 
-       g_at_chat_send(chat, "AT*ECAM=1", NULL, NULL, NULL, NULL);
-       g_at_chat_register(chat, "*ECAV:", ecav_notify, FALSE, vc, NULL);
+       g_at_chat_send(vd->chat, "AT*ECAM=1", NULL, NULL, NULL, NULL);
+       g_at_chat_register(vd->chat, "*ECAV:", ecav_notify, FALSE, vc, NULL);
        ofono_voicecall_register(vc);
 
        return 0;
@@ -560,6 +560,7 @@ static void ste_voicecall_remove(struct ofono_voicecall *vc)
 
        ofono_voicecall_set_data(vc, NULL);
 
+       g_at_chat_unref(vd->chat);
        g_free(vd);
 }