diff --git a/src/emu/screen.cpp b/src/emu/screen.cpp index c14c2ab1aac..52d373fbeb8 100644 --- a/src/emu/screen.cpp +++ b/src/emu/screen.cpp @@ -15,8 +15,11 @@ #include #include + +#include #include + //************************************************************************** // DEBUGGING //************************************************************************** @@ -91,10 +94,17 @@ private: screen_device::svg_renderer::svg_renderer(memory_region *region) { + // nanosvg makes assumptions about the global locale char *s = new char[region->bytes()+1]; memcpy(s, region->base(), region->bytes()); s[region->bytes()] = 0; + const char *const lcctype(std::setlocale(LC_CTYPE, nullptr)); + const char *const lcnumeric(std::setlocale(LC_NUMERIC, nullptr)); + std::setlocale(LC_CTYPE, "C"); + std::setlocale(LC_NUMERIC, "C"); m_image = nsvgParse(s, "px", 72); + std::setlocale(LC_CTYPE, lcctype); + std::setlocale(LC_NUMERIC, lcnumeric); delete[] s; m_rasterizer = nsvgCreateRasterizer();