Videocommon: setlocale for shader compilation, should fix problem with runaway , in certain locales.

Please test issues 1533 and 1496


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4418 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
nakeee 2009-10-14 01:58:39 +00:00
parent fb60b10c7b
commit 9f8a2986a2
3 changed files with 9 additions and 0 deletions

View File

@ -18,6 +18,7 @@
#include <stdio.h> #include <stdio.h>
#include <cmath> #include <cmath>
#include <assert.h> #include <assert.h>
#include <locale.h>
#include "Profiler.h" #include "Profiler.h"
#include "PixelShaderGen.h" #include "PixelShaderGen.h"
@ -382,6 +383,7 @@ static void BuildSwapModeTable()
const char *GeneratePixelShader(u32 texture_mask, bool dstAlphaEnable, bool HLSL) const char *GeneratePixelShader(u32 texture_mask, bool dstAlphaEnable, bool HLSL)
{ {
setlocale(LC_NUMERIC, "C"); // Reset locale for compilation
text[sizeof(text) - 1] = 0x7C; // canary text[sizeof(text) - 1] = 0x7C; // canary
DVSTARTPROFILE(); DVSTARTPROFILE();
@ -551,6 +553,7 @@ const char *GeneratePixelShader(u32 texture_mask, bool dstAlphaEnable, bool HLSL
if (text[sizeof(text) - 1] != 0x7C) if (text[sizeof(text) - 1] != 0x7C)
PanicAlert("PixelShader generator - buffer too small, canary has been eaten!"); PanicAlert("PixelShader generator - buffer too small, canary has been eaten!");
setlocale(LC_NUMERIC, ""); // restore locale
return text; return text;
} }

View File

@ -18,6 +18,7 @@
#include <stdio.h> #include <stdio.h>
#include <math.h> #include <math.h>
#include <locale.h>
#include "Common.h" #include "Common.h"
#include "TextureConversionShader.h" #include "TextureConversionShader.h"
@ -642,6 +643,7 @@ void WriteZ24Encoder(char* p)
const char *GenerateEncodingShader(u32 format) const char *GenerateEncodingShader(u32 format)
{ {
setlocale(LC_NUMERIC, "C"); // Reset locale for compilation
text[sizeof(text) - 1] = 0x7C; // canary text[sizeof(text) - 1] = 0x7C; // canary
char *p = text; char *p = text;
@ -725,6 +727,7 @@ const char *GenerateEncodingShader(u32 format)
if (text[sizeof(text) - 1] != 0x7C) if (text[sizeof(text) - 1] != 0x7C)
PanicAlert("TextureConversionShader generator - buffer too small, canary has been eaten!"); PanicAlert("TextureConversionShader generator - buffer too small, canary has been eaten!");
setlocale(LC_NUMERIC, ""); // restore locale
return text; return text;
} }

View File

@ -16,6 +16,7 @@
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#include <math.h> #include <math.h>
#include <locale.h>
#include "Profiler.h" #include "Profiler.h"
#include "NativeVertexFormat.h" #include "NativeVertexFormat.h"
@ -80,6 +81,7 @@ char *GenerateLightShader(char* p, int index, const LitChannel& chan, const char
const char *GenerateVertexShader(u32 components, bool D3D) const char *GenerateVertexShader(u32 components, bool D3D)
{ {
setlocale(LC_NUMERIC, "C"); // Reset locale for compilation
text[sizeof(text) - 1] = 0x7C; // canary text[sizeof(text) - 1] = 0x7C; // canary
DVSTARTPROFILE(); DVSTARTPROFILE();
@ -496,5 +498,6 @@ char* GenerateLightShader(char* p, int index, const LitChannel& chan, const char
} }
WRITE(p, "\n"); WRITE(p, "\n");
setlocale(LC_NUMERIC, ""); // restore locale
return p; return p;
} }