fix memoryleak 62/114362/1 accepted/tizen/3.0/common/20170215.121229 accepted/tizen/3.0/ivi/20170215.034226 accepted/tizen/3.0/mobile/20170215.033657 accepted/tizen/3.0/tv/20170215.033940 submit/tizen_3.0/20170214.112531
authorSeokHoon Lee <andy.shlee@samsung.com>
Mon, 13 Feb 2017 06:08:39 +0000 (15:08 +0900)
committerSeokHoon Lee <andy.shlee@samsung.com>
Mon, 13 Feb 2017 06:11:21 +0000 (15:11 +0900)
Signed-off-by: SeokHoon Lee <andy.shlee@samsung.com>
Change-Id: Id895eda0581a7ae6cc9f72e73d08b9550a791cbb

packaging/libmm-wfd.spec
src/mm_wfd_sink_priv.c
src/mm_wfd_sink_util.c

index 8300d77..ce8fe01 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-wfd
 Summary:    Multimedia Framework Wifi-Display Library
-Version:    0.2.214
+Version:    0.2.215
 Release:    0
 Group:      System/Libraries
 License:    Apache-2.0
index 10918fb..0d87265 100644 (file)
@@ -790,6 +790,7 @@ _mm_wfd_sink_msg_callback(GstBus *bus, GstMessage *msg, gpointer data)
        mm_wfd_sink_t *wfd_sink = (mm_wfd_sink_t *) data;
        const GstStructure *message_structure = gst_message_get_structure(msg);
        gboolean ret = TRUE;
+       gchar *getname = NULL;
 
        wfd_sink_return_val_if_fail(wfd_sink, FALSE);
        wfd_sink_return_val_if_fail(msg && GST_IS_MESSAGE(msg), FALSE);
@@ -1003,10 +1004,14 @@ _mm_wfd_sink_msg_callback(GstBus *bus, GstMessage *msg, gpointer data)
                break;
 
        case GST_MESSAGE_ASYNC_START:
-               wfd_sink_debug("GST_MESSAGE_ASYNC_START : %s", gst_element_get_name(GST_MESSAGE_SRC(msg)));
+               getname = gst_element_get_name(GST_MESSAGE_SRC(msg));
+               wfd_sink_debug("GST_MESSAGE_ASYNC_START : %s", getname);
+               MMWFDSINK_FREEIF(getname);
                break;
        case GST_MESSAGE_ASYNC_DONE:
-               wfd_sink_debug("GST_MESSAGE_ASYNC_DONE : %s", gst_element_get_name(GST_MESSAGE_SRC(msg)));
+               getname = gst_element_get_name(GST_MESSAGE_SRC(msg));
+               wfd_sink_debug("GST_MESSAGE_ASYNC_DONE : %s", getname);
+               MMWFDSINK_FREEIF(getname);
                break;
        case GST_MESSAGE_UNKNOWN:
        case GST_MESSAGE_INFO:
@@ -2377,7 +2382,7 @@ static void
 __mm_wfd_sink_demux_pad_added(GstElement *demux, GstPad *pad, gpointer data)
 {
        mm_wfd_sink_t *wfd_sink = (mm_wfd_sink_t *)data;
-       gchar *name = gst_pad_get_name(pad);
+       gchar *name = NULL;
        GstElement *pipeline = NULL;
        GstElement *valve = NULL;
        GstPad *sinkpad = NULL;
@@ -2390,6 +2395,7 @@ __mm_wfd_sink_demux_pad_added(GstElement *demux, GstPad *pad, gpointer data)
                                                        wfd_sink->pipeline->mainbin &&
                                                        wfd_sink->pipeline->mainbin[WFD_SINK_M_PIPE].gst);
 
+       name = gst_pad_get_name(pad);
        pipeline = wfd_sink->pipeline->mainbin[WFD_SINK_M_PIPE].gst;
 
        /* take srcpad from demuxer added pad */
index 21da193..a5801b4 100644 (file)
@@ -37,6 +37,8 @@ _mm_wfd_sink_util_dump(GstPad *pad, GstPadProbeInfo *info, gpointer u_data)
        char buf[256] = {0, };
        char path[256] = {0, };
        GstElement *parent = NULL;
+       gchar *padname = NULL;
+       gchar *elementname = NULL;
 
        parent = gst_pad_get_parent_element(pad);
        if (parent == NULL) {
@@ -44,7 +46,11 @@ _mm_wfd_sink_util_dump(GstPad *pad, GstPadProbeInfo *info, gpointer u_data)
                return GST_PAD_PROBE_OK;
        }
 
-       snprintf(path, sizeof(path), TS_DUMP_FILE_FORMAT, DUMP_TS_DATA_PATH, gst_element_get_name(parent), gst_pad_get_name(pad));
+       padname = gst_pad_get_name(pad);
+       elementname = gst_element_get_name(parent);
+       snprintf(path, sizeof(path), TS_DUMP_FILE_FORMAT, DUMP_TS_DATA_PATH, elementname, padname);
+       MMWFDSINK_FREEIF(padname);
+       MMWFDSINK_FREEIF(elementname);
        gst_object_unref(parent);
 
        if (info && info->type & GST_PAD_PROBE_TYPE_BUFFER) {
@@ -168,7 +174,11 @@ mm_wfd_sink_util_add_pad_probe_for_data_dump(GstElement *element, const gchar *p
 
        if (probe_pad) {
                char file_path[256] = {0, };
-               snprintf(file_path, sizeof(file_path), TS_DUMP_FILE_FORMAT, DUMP_TS_DATA_PATH, gst_element_get_name(element), pad_name);
+               gchar *elementname = NULL;
+
+               elementname = gst_element_get_name(element);
+               snprintf(file_path, sizeof(file_path), TS_DUMP_FILE_FORMAT, DUMP_TS_DATA_PATH, elementname, pad_name);
+               MMWFDSINK_FREEIF(elementname);
                remove(file_path);
 
                wfd_sink_debug("add pad(%s) probe", GST_STR_NULL(GST_PAD_NAME(probe_pad)));