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 <kusmab...@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() +{ + _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 e5e6f76..5c36b05 100644 --- a/src/util/strtod.c +++ b/src/util/strtod.c @@ -46,6 +46,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); -- 2.1.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev