Skip to content

Commit

Permalink
[test] Fixed memory leaks
Browse files Browse the repository at this point in the history
  • Loading branch information
monich committed Mar 11, 2016
1 parent 6530a67 commit 18c0043
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 19 deletions.
60 changes: 41 additions & 19 deletions mms-lib/test/common/test_connection.c
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2013-2015 Jolla Ltd.
* Copyright (C) 2013-2016 Jolla Ltd.
* Contact: Slava Monich <slava.monich@jolla.com>
*
* This program is free software; you can redistribute it and/or modify
Expand All @@ -21,15 +21,21 @@
MMS_LOG_MODULE_DEFINE("mms-connection-test");

typedef MMSConnectionClass MMSConnectionTestClass;
typedef MMSConnection MMSConnectionTest;
typedef struct mms_connection_test {
MMSConnection connection;
char* imsi;
char* mmsc;
char* mmsproxy;
char* netif;
} MMSConnectionTest;

G_DEFINE_TYPE(MMSConnectionTest, mms_connection_test, MMS_TYPE_CONNECTION);
#define MMS_TYPE_CONNECTION_TEST (mms_connection_test_get_type())
#define MMS_CONNECTION_TEST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),\
MMS_TYPE_CONNECTION_TEST, MMSConnectionTest))

typedef struct test_connection_state_change {
MMSConnectionTest* test;
MMSConnection* conn;
MMS_CONNECTION_STATE state;
} MMSConnectionStateChange;

Expand All @@ -39,28 +45,28 @@ test_connection_test_state_change_cb(
void* param)
{
MMSConnectionStateChange* change = param;
MMSConnectionTest* test = change->test;
if (test->state != MMS_CONNECTION_STATE_CLOSED &&
test->state != MMS_CONNECTION_STATE_FAILED &&
test->state != change->state) {
test->state = change->state;
mms_connection_signal_state_change(test);
MMSConnection* conn = change->conn;
if (conn->state != MMS_CONNECTION_STATE_CLOSED &&
conn->state != MMS_CONNECTION_STATE_FAILED &&
conn->state != change->state) {
conn->state = change->state;
mms_connection_signal_state_change(conn);
}
mms_connection_unref(change->test);
mms_connection_unref(conn);
g_free(change);
return FALSE;
}

static
gboolean
mms_connection_test_set_state(
MMSConnection* test,
MMSConnection* conn,
MMS_CONNECTION_STATE state)
{
if (test->state != MMS_CONNECTION_STATE_CLOSED) {
if (conn->state != MMS_CONNECTION_STATE_CLOSED) {
MMSConnectionStateChange* change = g_new0(MMSConnectionStateChange,1);
change->state = state;
change->test = mms_connection_ref(test);
change->conn = mms_connection_ref(conn);
g_idle_add(test_connection_test_state_change_cb, change);
}
return TRUE;
Expand All @@ -73,21 +79,24 @@ mms_connection_test_new(
gboolean proxy)
{
MMSConnectionTest* test = g_object_new(MMS_TYPE_CONNECTION_TEST, NULL);
test->imsi = g_strdup(imsi);
MMSConnection* conn = &test->connection;
conn->imsi = test->imsi = g_strdup(imsi);
if (port) {
test->netif = g_strdup("lo");
conn->netif = test->netif = g_strdup("lo");
if (proxy) {
test->mmsc = g_strdup("http://mmsc");
test->mmsproxy = g_strdup_printf("127.0.0.1:%hu", port);
} else {
test->mmsc = g_strdup_printf("http://127.0.0.1:%hu", port);
}
conn->mmsc = test->mmsc;
conn->mmsproxy = test->mmsproxy;
}
test->type = MMS_CONNECTION_TYPE_AUTO;
test->state = MMS_CONNECTION_STATE_OPENING;
mms_connection_test_set_state(test, test->netif ?
conn->type = MMS_CONNECTION_TYPE_AUTO;
conn->state = MMS_CONNECTION_STATE_OPENING;
mms_connection_test_set_state(conn, conn->netif ?
MMS_CONNECTION_STATE_OPEN : MMS_CONNECTION_STATE_FAILED);
return test;
return conn;
}

static
Expand All @@ -97,6 +106,18 @@ mms_connection_test_close(
{
mms_connection_test_set_state(test, MMS_CONNECTION_STATE_CLOSED);
}
static
void
mms_connection_test_finalize(
GObject* object)
{
MMSConnectionTest* test = MMS_CONNECTION_TEST(object);
g_free(test->imsi);
g_free(test->mmsc);
g_free(test->mmsproxy);
g_free(test->netif);
G_OBJECT_CLASS(mms_connection_test_parent_class)->finalize(object);
}

/**
* Per class initializer
Expand All @@ -107,6 +128,7 @@ mms_connection_test_class_init(
MMSConnectionTestClass* klass)
{
klass->fn_close = mms_connection_test_close;
G_OBJECT_CLASS(klass)->finalize = mms_connection_test_finalize;
}

/**
Expand Down
1 change: 1 addition & 0 deletions mms-lib/test/test_send/test_send.c
Expand Up @@ -468,6 +468,7 @@ test_run_once(
} else {
MMS_INFO("FAILED: %s", desc->name);
}
if (error) g_error_free(error);
g_free(imsi);
g_free(imsi2);
test_finalize(&test);
Expand Down

0 comments on commit 18c0043

Please sign in to comment.