From: Juan Navarro Date: Tue, 25 Jun 2019 18:37:38 +0000 (+0200) Subject: dtlsdec: Avoid duplicate ref when passing certificate property X-Git-Tag: accepted/tizen/unified/20220217.153506~2^2~10^2~9^2~12^2~2^2~90^2~1^2~72 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=93d311867c8a25d9ea505b9feba298bc0f221171;p=platform%2Fupstream%2Fgstreamer.git dtlsdec: Avoid duplicate ref when passing certificate property The agent itself will take a ref on the property setter, so we'll be left with two references to the certificate object, when actually there should be only one --- diff --git a/ext/dtls/gstdtlsdec.c b/ext/dtls/gstdtlsdec.c index 87b8221..e41914e 100644 --- a/ext/dtls/gstdtlsdec.c +++ b/ext/dtls/gstdtlsdec.c @@ -587,9 +587,12 @@ get_agent_by_pem (const gchar * pem) if (!pem) { if (g_once_init_enter (&generated_cert_agent)) { GstDtlsAgent *new_agent; + GObject *certificate; + certificate = g_object_new (GST_TYPE_DTLS_CERTIFICATE, NULL); new_agent = g_object_new (GST_TYPE_DTLS_AGENT, "certificate", - g_object_new (GST_TYPE_DTLS_CERTIFICATE, NULL), NULL); + certificate, NULL); + g_object_unref (certificate); GST_DEBUG_OBJECT (generated_cert_agent, "no agent with generated cert found, creating new"); @@ -612,9 +615,12 @@ get_agent_by_pem (const gchar * pem) agent = GST_DTLS_AGENT (g_hash_table_lookup (agent_table, pem)); if (!agent) { - agent = g_object_new (GST_TYPE_DTLS_AGENT, - "certificate", g_object_new (GST_TYPE_DTLS_CERTIFICATE, "pem", pem, - NULL), NULL); + GObject *certificate; + + certificate = g_object_new (GST_TYPE_DTLS_CERTIFICATE, "pem", pem, NULL); + agent = g_object_new (GST_TYPE_DTLS_AGENT, "certificate", certificate, + NULL); + g_object_unref (certificate); g_object_weak_ref (G_OBJECT (agent), (GWeakNotify) agent_weak_ref_notify, (gpointer) g_strdup (pem));