diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-10-07 20:02:20 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-10-07 20:02:20 +0000 |
commit | 51d4e4c1239baecfdb8a988f5c6612731f00a1c8 (patch) | |
tree | e859ed2d7933327ef595a99cacb4536cda350fb4 | |
parent | 429b32fba6f5ad14db31fe2690974b57df858999 (diff) |
fix small memory leak and make connection id atomic
-rw-r--r-- | src/trg-client.c | 6 | ||||
-rw-r--r-- | src/trg-client.h | 2 | ||||
-rw-r--r-- | src/trg-menu-bar.c | 2 |
3 files changed, 6 insertions, 4 deletions
diff --git a/src/trg-client.c b/src/trg-client.c index e01da05..ec53e3e 100644 --- a/src/trg-client.c +++ b/src/trg-client.c @@ -53,7 +53,7 @@ typedef struct _TrgClientPrivate TrgClientPrivate; struct _TrgClientPrivate { char *session_id; - guint connid; + gint connid; gboolean activeOnlyUpdate; guint failCount; guint interval; @@ -177,7 +177,7 @@ void trg_client_set_session(TrgClient * tc, JsonObject * session) json_object_unref(priv->session); } else { session_get_version(session, &priv->version); - priv->connid++; + g_atomic_int_inc(&priv->connid); } priv->session = session; @@ -657,7 +657,7 @@ static void dispatch_async_threadfunc(trg_request *req, rsp->cb_data = req->cb_data; - if (req->callback && req->connid == priv->connid) + if (req->callback && req->connid == g_atomic_int_get(&priv->connid)) g_idle_add(req->callback, rsp); else trg_response_free(rsp); diff --git a/src/trg-client.h b/src/trg-client.h index 0c35edb..1ac46ed 100644 --- a/src/trg-client.h +++ b/src/trg-client.h @@ -70,7 +70,7 @@ typedef struct { typedef struct { - int connid; + gint connid; JsonNode *node; gchar *str; GSourceFunc callback; diff --git a/src/trg-menu-bar.c b/src/trg-menu-bar.c index abc4b5b..db7dff1 100644 --- a/src/trg-menu-bar.c +++ b/src/trg-menu-bar.c @@ -419,6 +419,8 @@ GtkWidget *trg_menu_bar_file_connect_menu_new(TrgMainWindow *win, TrgPrefs *p) GTK_STOCK_CONNECT, profile); } + g_list_free(profiles); + return menu; } |