[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