[telepathy-gabble/master] Don't leak a copy of contents' disposition
Will Thompson
will.thompson at collabora.co.uk
Thu Jun 11 09:56:46 PDT 2009
---
src/jingle-content.c | 6 ++++++
src/jingle-content.h | 1 +
src/jingle-session.c | 15 ++++++---------
3 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/src/jingle-content.c b/src/jingle-content.c
index 1966f92..02d0671 100644
--- a/src/jingle-content.c
+++ b/src/jingle-content.c
@@ -1025,3 +1025,9 @@ gabble_jingle_content_get_name (GabbleJingleContent *self)
{
return self->priv->name;
}
+
+const gchar *
+gabble_jingle_content_get_disposition (GabbleJingleContent *self)
+{
+ return self->priv->disposition;
+}
diff --git a/src/jingle-content.h b/src/jingle-content.h
index c450549..a23110a 100644
--- a/src/jingle-content.h
+++ b/src/jingle-content.h
@@ -122,6 +122,7 @@ gboolean gabble_jingle_content_is_created_by_us (GabbleJingleContent *c);
gboolean gabble_jingle_content_creator_is_initiator (GabbleJingleContent *c);
const gchar *gabble_jingle_content_get_name (GabbleJingleContent *self);
+const gchar *gabble_jingle_content_get_disposition (GabbleJingleContent *self);
void gabble_jingle_content_maybe_send_description (GabbleJingleContent *self);
diff --git a/src/jingle-session.c b/src/jingle-session.c
index 2855630..1380045 100644
--- a/src/jingle-session.c
+++ b/src/jingle-session.c
@@ -1550,17 +1550,11 @@ _map_initial_contents (GabbleJingleSession *sess, ContentMapperFunc mapper,
for (li = contents; li; li = li->next)
{
- gchar *disposition;
GabbleJingleContent *c = GABBLE_JINGLE_CONTENT (li->data);
-
- g_object_get (c, "disposition", &disposition, NULL);
+ const gchar *disposition = gabble_jingle_content_get_disposition (c);
if (!tp_strdiff (disposition, "session"))
- {
- mapper (sess, c, user_data);
- }
-
- g_free (disposition);
+ mapper (sess, c, user_data);
}
g_list_free (contents);
@@ -2070,7 +2064,10 @@ content_ready_cb (GabbleJingleContent *c, gpointer user_data)
DEBUG ("called");
- g_object_get (c, "disposition", &disposition, NULL);
+ disposition = gabble_jingle_content_get_disposition (c);
+ /* This assertion is actually safe, because 'ready' is only emitted by
+ * contents with disposition "session". But this is crazy.
+ */
g_assert (!tp_strdiff (disposition, "session"));
try_session_initiate_or_accept (sess);
--
1.5.6.5
More information about the telepathy-commits
mailing list