From 12a132aa326a0a2fef4a78667955b251ca7df499 Mon Sep 17 00:00:00 2001 From: Barry Harris <44396066+barry65536@users.noreply.github.com> Date: Tue, 24 Jan 2012 20:15:16 +0000 Subject: [PATCH] Hopefully fix gamelist localisation on Chinese machines, no way to test though. --- src/burner/win32/localise_gamelist.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/burner/win32/localise_gamelist.cpp b/src/burner/win32/localise_gamelist.cpp index 067d0ad5f..b6dc6f2fd 100644 --- a/src/burner/win32/localise_gamelist.cpp +++ b/src/burner/win32/localise_gamelist.cpp @@ -16,7 +16,7 @@ void BurnerDoGameListLocalisation() FILE* fp = _tfopen(szGamelistLocalisationTemplate, _T("rt")); if (fp) { TCHAR *szShortNamesArray[MAX_LST_GAMES]; - TCHAR szLine[MAX_LST_GAMES]; + TCHAR szLine[MAX_LST_LINE_LEN * sizeof(TCHAR)]; int nTokenPos = 0; int nArrayPos = 0; int nNumGames = 0; @@ -25,6 +25,8 @@ void BurnerDoGameListLocalisation() for (int i = 0; i < MAX_LST_GAMES; i++) { szLongNamesArray[i] = (TCHAR*)malloc(MAX_LST_LINE_LEN * sizeof(TCHAR)); szShortNamesArray[i] = (TCHAR*)malloc(33 * sizeof(TCHAR)); + memset(szLongNamesArray[i], _T('\0'), MAX_LST_LINE_LEN * sizeof(TCHAR)); + memset(szShortNamesArray[i], _T('\0'), 33 * sizeof(TCHAR)); } char szTemp[MAX_LST_LINE_LEN]; @@ -49,28 +51,28 @@ void BurnerDoGameListLocalisation() continue; } - MultiByteToWideChar(nCodePage, 0, szTemp, -1, szLine, sizeof(szLine) / sizeof(TCHAR)); - - int nLen = _tcslen(szLine); - TCHAR *Tokens; - // Get rid of the linefeed at the end - if (szLine[nLen - 1] == 10) { - szLine[nLen - 1] = 0; + int nLen = strlen(szTemp); + if (szTemp[nLen - 1] == 10) { + szTemp[nLen - 1] = 0; nLen--; } + MultiByteToWideChar(nCodePage, 0, szTemp, -1, szLine, sizeof(szLine) / sizeof(TCHAR)); + + TCHAR *Tokens; + // Read the file into arrays Tokens = _tcstok(szLine, _T("\t")); while (Tokens != NULL) { if (nTokenPos == 0) { wcscpy(szShortNamesArray[nArrayPos], Tokens); - szShortNamesArray[nArrayPos][_tcslen(Tokens)] = _T('\0'); +// szShortNamesArray[nArrayPos][_tcslen(Tokens)] = _T('\0'); } if (nTokenPos == 1) { wcscpy(szLongNamesArray[nArrayPos], Tokens); - szLongNamesArray[nArrayPos][_tcslen(Tokens)] = _T('\0'); +// szLongNamesArray[nArrayPos][_tcslen(Tokens)] = _T('\0'); } Tokens = _tcstok(NULL, _T("\t"));