[Mesa-dev] [PATCH v3 6/6] mesa/main: free locale at exit
Brian Paul
brianp at vmware.com
Fri Jun 26 12:05:19 PDT 2015
On 06/26/2015 12:06 PM, Erik Faye-Lund wrote:
> In order to save a small leak if mesa is continously loaded and
> unloaded, let's free the locale when the shared object is unloaded.
>
> Signed-off-by: Erik Faye-Lund <kusmabite at gmail.com>
> Reviewed-by: Matt Turner <mattst88 at gmail.com>
> ---
> src/mesa/main/context.c | 12 +++++++++++-
> src/util/strtod.c | 8 ++++++++
> src/util/strtod.h | 3 +++
> 3 files changed, 22 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
> index e68de68..dee1fa8 100644
> --- a/src/mesa/main/context.c
> +++ b/src/mesa/main/context.c
> @@ -346,6 +346,16 @@ _mesa_destroy_visual( struct gl_config *vis )
> mtx_t OneTimeLock = _MTX_INITIALIZER_NP;
>
>
> +/**
> + * Calls all the various one-time-fini functions in Mesa
> + */
> +
> +static void
> +one_time_fini()
I think that should be one_time_fini(void) to be consistent and to avoid
warnings with some compilers.
Otherwise, the series looks good to me. Nice to see patch 1. I
remember writing that dumb code years ago.
Reviewed-by: Brian Paul <brianp at vmware.com>
> +{
> + _mesa_destroy_shader_compiler();
> + _mesa_locale_fini();
> +}
>
> /**
> * Calls all the various one-time-init functions in Mesa.
> @@ -385,7 +395,7 @@ one_time_init( struct gl_context *ctx )
> _mesa_ubyte_to_float_color_tab[i] = (float) i / 255.0F;
> }
>
> - atexit(_mesa_destroy_shader_compiler);
> + atexit(one_time_fini);
>
> #if defined(DEBUG) && defined(__DATE__) && defined(__TIME__)
> if (MESA_VERBOSE != 0) {
> diff --git a/src/util/strtod.c b/src/util/strtod.c
> index a4a60e0..ea7d395 100644
> --- a/src/util/strtod.c
> +++ b/src/util/strtod.c
> @@ -45,6 +45,14 @@ _mesa_locale_init(void)
> #endif
> }
>
> +void
> +_mesa_locale_fini(void)
> +{
> +#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H)
> + freelocale(loc);
> +#endif
> +}
> +
> /**
> * Wrapper around strtod which uses the "C" locale so the decimal
> * point is always '.'
> diff --git a/src/util/strtod.h b/src/util/strtod.h
> index b7e2beb..60e15cf 100644
> --- a/src/util/strtod.h
> +++ b/src/util/strtod.h
> @@ -34,6 +34,9 @@ extern "C" {
> extern void
> _mesa_locale_init(void);
>
> +extern void
> +_mesa_locale_fini(void);
> +
> extern double
> _mesa_strtod(const char *s, char **end);
>
>
More information about the mesa-dev
mailing list