X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=effect_chain.cpp;h=81613e69fba3c602ad9116b4b66e6f0cc8a239c5;hb=401c6ca91cf582904cf38d6bfe1d82a073eff559;hp=a5c3bbdcb08fc29700119c1625892519da73b39a;hpb=1400c353ad03f4d31f665be0d02e8e360f69ef5c;p=movit diff --git a/effect_chain.cpp b/effect_chain.cpp index a5c3bbd..81613e6 100644 --- a/effect_chain.cpp +++ b/effect_chain.cpp @@ -1332,11 +1332,8 @@ void EffectChain::finalize() { // Save the current locale, and set it to C, so that we can output decimal // numbers with printf and be sure to get them in the format mandated by GLSL. - // Note that the OpenGL driver might call setlocale() behind-the-scenes, - // and that might corrupt the returned pointer, so we need to take our own - // copy of it here. - char *saved_locale = strdup(setlocale(LC_NUMERIC, NULL)); - setlocale(LC_NUMERIC, "C"); + locale_t c_locale = newlocale(LC_NUMERIC_MASK, "C", (locale_t)0); + locale_t saved_locale = uselocale(c_locale); // Output the graph as it is before we do any conversions on it. output_dot("step0-start.dot"); @@ -1400,8 +1397,8 @@ void EffectChain::finalize() assert(phases[0]->inputs.empty()); finalized = true; - setlocale(LC_NUMERIC, saved_locale); - free(saved_locale); + uselocale(saved_locale); + freelocale(c_locale); } void EffectChain::render_to_fbo(GLuint dest_fbo, unsigned width, unsigned height)