Release argv used for gst_init_check() 42/170342/6
authorHyunil <hyunil46.park@samsung.com>
Mon, 19 Feb 2018 08:28:07 +0000 (17:28 +0900)
committerHyunil <hyunil46.park@samsung.com>
Tue, 20 Feb 2018 07:53:04 +0000 (16:53 +0900)
Change-Id: Ifa9e3493bd230c186234e178215a8ee3acb55180
Signed-off-by: Hyunil <hyunil46.park@samsung.com>
src/media_streamer_gst.c

index d323c5faaf7ae7ff751ce869d42dd8726fa1534d..33fa1b60aed1871483d3d67a5e1b1833418ba2a7 100644 (file)
@@ -2116,11 +2116,12 @@ static gboolean __ms_bus_cb(GstBus *bus, GstMessage *message, gpointer userdata)
 
 int __ms_pipeline_create(media_streamer_s *ms_streamer)
 {
-       GError *err = NULL;
        int ret = MEDIA_STREAMER_ERROR_NONE;
        int *argc = NULL;
        char **argv = NULL;
+       GError *err = NULL;
        gboolean gst_ret = 0;
+       int i = 0;
 
        ms_debug_fenter();
 
@@ -2132,9 +2133,10 @@ int __ms_pipeline_create(media_streamer_s *ms_streamer)
                return MEDIA_STREAMER_ERROR_INVALID_OPERATION;
        }
 
+       /* get argc(number of command line option), argc is always one widthout option */
        *argc = 1;
        if (ms_streamer->ini.gst_args)
-               (*argc) += g_strv_length(ms_streamer->ini.gst_args);
+               (*argc) += g_strv_length(ms_streamer->ini.gst_args); /* default is "--gst-debug = 2 */
 
        argv = (char **)calloc(*argc, sizeof(char*));
        if (!argv) {
@@ -2146,7 +2148,6 @@ int __ms_pipeline_create(media_streamer_s *ms_streamer)
        argv[0] = g_strdup("MediaStreamer");
 
        if (ms_streamer->ini.gst_args) {
-               int i = 0;
                for ( ; ms_streamer->ini.gst_args[i]; ++i) {
                        if (*argc <= i+1) {
                                ms_error("need to check, prevent overrun");
@@ -2158,10 +2159,15 @@ int __ms_pipeline_create(media_streamer_s *ms_streamer)
        }
 
        gst_ret = gst_init_check(argc, &argv, &err);
+
        /* Clean memory of gstreamer arguments*/
        g_strfreev(ms_streamer->ini.gst_args);
        ms_streamer->ini.gst_args = NULL;
-       MS_SAFE_FREE(argv[0]);
+
+       for (i = 1; i < *argc; i++)
+               argv[i] = NULL;
+
+       MS_SAFE_GFREE(argv[0]);
        MS_SAFE_FREE(argv);
        MS_SAFE_FREE(argc);