[MPlayer-dev-eng] [PATCH][Trac 2311] codec_path mem leak

KO Myung-Hun komh78 at gmail.com
Tue Jan 17 02:25:57 EET 2017


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 <eclipse7 at gmx.net>
> 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
> MPlayer-dev-eng at mplayerhq.hu
> 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



More information about the MPlayer-dev-eng mailing list