summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/screen.cpp10
1 files changed, 10 insertions, 0 deletions
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 <nanosvg/src/nanosvg.h>
#include <nanosvg/src/nanosvgrast.h>
+
+#include <clocale>
#include <set>
+
//**************************************************************************
// 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();