From 76a2e99d6bb80aaf515b8da699255c87498f7ca0 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Tue, 5 Nov 2019 18:36:51 +1100 Subject: Set global locale when parsing with nanosvg - fixes SVG display issues when locale is not English --- src/emu/screen.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/emu') 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(); -- cgit v1.2.3