Re: [PATCH][Trac 2311] codec_path mem leak

KO Myung-Hun <[email protected]>
Newsgroups gmane.comp.video.mplayer.devel
Message-ID <[email protected]>
Hi/2.

Alexander Strasser wrote:
> Hello all,
> 
> while investigating the leaks pointed out in ticket #2311, I found
> that the attached patch fixes the remaining leak.
> 
> The current code seems pretty wrong. At least, as I understand it,
> the function set_codec_path ever only got called once. The implementation
> combined with exporting the codec_path global var seems not solid at all.
> 
> Still I feel like I am missing something...
> It seems to easy to be true, maybe some of you can have a look or test.
> I only tested by debug printing the value of codec_path after common_init
> in mplayer.c, and not actually loading a binary codec.
> 
> 

How about calling set_codec_path(0) at exit ?

>   Alexander
> 
> 
> 0001-mpcommon-common_init-Avoid-creating-a-mem-leak-of-co.patch
> 
> 
> From 574fb28e7f6411300776d06bc62d23c5bb82da24 Mon Sep 17 00:00:00 2001
> From: Alexander Strasser <[email protected]>
> Date: Wed, 4 Jan 2017 23:45:30 +0100
> Subject: [PATCH] mpcommon/common_init: Avoid creating a mem leak of codec_path
> 
> The codec path is set by the config system anyway. Setting it again
> and assuming the original value wasn't already duplicated by the
> config system just creates a mem leak.
> 
> This change also simplifies the code because function set_codec_path
> isn't needed anymore.
> 
> Fixes part of ticket 2311
> ---
>  mpcommon.c |  3 ---
>  path.c     | 16 ----------------
>  path.h     |  1 -
>  3 files changed, 20 deletions(-)
> 
> diff --git a/mpcommon.c b/mpcommon.c
> index ebc9711e6..211828c49 100644
> --- a/mpcommon.c
> +++ b/mpcommon.c
> @@ -588,9 +588,6 @@ int common_init(void)
>      set_priority();
>  #endif
>  
> -    if (codec_path)
> -        set_codec_path(codec_path);
> -
>      /* Check codecs.conf. */
>      if (!codecs_file || !parse_codec_cfg(codecs_file)) {
>          char *conf_path = get_path("codecs.conf");
> diff --git a/path.c b/path.c
> index b8d9335fe..e6287d220 100644
> --- a/path.c
> +++ b/path.c
> @@ -174,22 +174,6 @@ void set_path_env(void)
>  
>  char *codec_path = BINARY_CODECS_PATH;
>  
> -static int needs_free = 0;
> -
> -void set_codec_path(const char *path)
> -{
> -    if (needs_free)
> -        free(codec_path);
> -    if (path == 0) {
> -        codec_path = BINARY_CODECS_PATH;
> -        needs_free = 0;
> -        return;
> -    }
> -    codec_path = malloc(strlen(path) + 1);
> -    strcpy(codec_path, path);
> -    needs_free = 1;
> -}
> -
>  /**
>   * @brief Returns the basename substring of a path.
>   */
> diff --git a/path.h b/path.h
> index 1389fc491..0f4594340 100644
> --- a/path.h
> +++ b/path.h
> @@ -25,7 +25,6 @@ extern char *codec_path;
>  
>  char *get_path(const char *filename);
>  void set_path_env(void);
> -void set_codec_path(const char *path);
>  const char *mp_basename(const char *path);
>  char *mp_dirname(const char *path);
>  char *mp_path_join(const char *base, const char *new_path);
> 
> 
> 
> _______________________________________________
> MPlayer-dev-eng mailing list
> [email protected]
> https://lists.mplayerhq.hu/mailman/listinfo/mplayer-dev-eng

-- 
KO Myung-Hun

Using Mozilla SeaMonkey 2.7.2
Under OS/2 Warp 4 for Korean with FixPak #15
In VirtualBox v4.1.32 on Intel Core i7-3615QM 2.30GHz with 8GB RAM

Korean OS/2 User Community : http://www.ecomstation.co.kr

_______________________________________________
MPlayer-dev-eng mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/mplayer-dev-eng
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.