--- angleproject/src/libANGLE/renderer/d3d/RendererD3D.cpp.orig 2016-03-23 19:22:28.000000000 +0100 +++ angleproject/src/libANGLE/renderer/d3d/RendererD3D.cpp 2016-03-23 21:24:13.194525939 +0100 @@ -25,9 +25,27 @@ #include "libANGLE/State.h" #include "libANGLE/VertexArray.h" +#include +#include + namespace rx { +inline std::wstring widen(const char *to_widen) +{ + // determine length of original string + int len = strlen(to_widen); + if(!len) { + return std::wstring(); + } + // construct new string of required length + std::wstring ret(::MultiByteToWideChar(CP_UTF8, 0, to_widen, len, 0, 0), L'\0'); + // convert old string to new string + ::MultiByteToWideChar(CP_UTF8, 0, to_widen, len, &ret[0], (int)ret.length()); + // return new string + return ret; +} + namespace { // If we request a scratch buffer requesting a smaller size this many times, @@ -639,24 +657,12 @@ void RendererD3D::insertEventMarker(GLsizei length, const char *marker) { - std::vector wcstring (length + 1); - size_t convertedChars = 0; - errno_t err = mbstowcs_s(&convertedChars, wcstring.data(), length + 1, marker, _TRUNCATE); - if (err == 0) - { - getAnnotator()->setMarker(wcstring.data()); - } + getAnnotator()->setMarker(widen(marker).data()); } void RendererD3D::pushGroupMarker(GLsizei length, const char *marker) { - std::vector wcstring(length + 1); - size_t convertedChars = 0; - errno_t err = mbstowcs_s(&convertedChars, wcstring.data(), length + 1, marker, _TRUNCATE); - if (err == 0) - { - getAnnotator()->beginEvent(wcstring.data()); - } + getAnnotator()->beginEvent(widen(marker).data()); } void RendererD3D::popGroupMarker()