X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=effect_chain.cpp;h=a5c3bbdcb08fc29700119c1625892519da73b39a;hp=0a01bd356e6066261910a60e4ee2af2813d428f5;hb=041500231054441f851b7c7260ab815dae6fb368;hpb=1b46606b3c5d6a7a97528a53d0309d3cd04df62b diff --git a/effect_chain.cpp b/effect_chain.cpp index 0a01bd3..a5c3bbd 100644 --- a/effect_chain.cpp +++ b/effect_chain.cpp @@ -1332,7 +1332,11 @@ 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. - char *saved_locale = setlocale(LC_NUMERIC, "C"); + // 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"); // Output the graph as it is before we do any conversions on it. output_dot("step0-start.dot"); @@ -1397,6 +1401,7 @@ void EffectChain::finalize() finalized = true; setlocale(LC_NUMERIC, saved_locale); + free(saved_locale); } void EffectChain::render_to_fbo(GLuint dest_fbo, unsigned width, unsigned height)