Fix truncated names and descriptions in the game list on linux.

This commit is contained in:
Glenn Rice 2013-01-03 10:35:07 -06:00
parent 91023e133b
commit 3da05af30a
3 changed files with 19 additions and 11 deletions

View File

@ -155,7 +155,14 @@ public:
Do(stringLen); Do(stringLen);
switch (mode) { switch (mode) {
case MODE_READ: x = (wchar_t*)*ptr; break; case MODE_READ:
{
wchar_t* tmp = new wchar_t[stringLen / sizeof(wchar_t)];
memcpy(tmp, *ptr, stringLen);
x = tmp;
delete[] tmp;
}
break;
case MODE_WRITE: memcpy(*ptr, x.c_str(), stringLen); break; case MODE_WRITE: memcpy(*ptr, x.c_str(), stringLen); break;
case MODE_MEASURE: break; case MODE_MEASURE: break;
case MODE_VERIFY: _dbg_assert_msg_(COMMON, x == (wchar_t*)*ptr, "Savestate verification failure: \"%ls\" != \"%ls\" (at %p).\n", x.c_str(), (wchar_t*)*ptr, ptr); break; case MODE_VERIFY: _dbg_assert_msg_(COMMON, x == (wchar_t*)*ptr, "Savestate verification failure: \"%ls\" != \"%ls\" (at %p).\n", x.c_str(), (wchar_t*)*ptr, ptr); break;

View File

@ -464,14 +464,15 @@ void CGameListCtrl::InsertItemInReportView(long _Index)
SelectedLanguage = 0; SelectedLanguage = 0;
default: default:
{ {
wxCSConv WindowsCP1252(wxFontMapper::GetEncodingName(wxFONTENCODING_CP1252)); wxCSConv WindowsCP1252(wxFontMapper::GetEncodingName(wxFONTENCODING_CP1252));
rISOFile.GetName(wstring_name, SelectedLanguage); rISOFile.GetName(wstring_name, SelectedLanguage);
name = wxString(rISOFile.GetName(SelectedLanguage).c_str(), WindowsCP1252); name = wxString(rISOFile.GetName(SelectedLanguage).c_str(), WindowsCP1252);
m_gameList.append(StringFromFormat("%s (%c)\n", m_gameList.append(StringFromFormat("%s (%c)\n",
rISOFile.GetName(SelectedLanguage).c_str(), (rISOFile.GetCountry() == DiscIO::IVolume::COUNTRY_USA)?'U':'E')); rISOFile.GetName(SelectedLanguage).c_str(),
description = wxString(company.size() ? company.c_str() : (rISOFile.GetCountry() == DiscIO::IVolume::COUNTRY_USA) ? 'U' : 'E'));
rISOFile.GetDescription(SelectedLanguage).c_str(), WindowsCP1252); description = wxString(company.size() ? company.c_str() :
rISOFile.GetDescription(SelectedLanguage).c_str(), WindowsCP1252);
} }
break; break;
} }

View File

@ -140,8 +140,8 @@ GameListItem::GameListItem(const std::string& _rFileName)
SplitPath(m_FileName, NULL, &FileName, NULL); SplitPath(m_FileName, NULL, &FileName, NULL);
int length = FileName.length(); int length = FileName.length();
wFileName.reserve(length+1); wFileName.reserve(length+1);
for (int i = 0; i < length; ++i) for (int j = 0; j < length; ++j)
wFileName.push_back(FileName[i]); wFileName.push_back(FileName[j]);
wFileName.push_back(0); wFileName.push_back(0);
} }
*i = wFileName; *i = wFileName;
@ -283,7 +283,7 @@ bool GameListItem::GetName(std::wstring& wName, int index) const
// This function will only succeed for wii discs with banners or WADs // This function will only succeed for wii discs with banners or WADs
// utilize the same array as for gc discs (-1= Japanese, 0 = English etc // utilize the same array as for gc discs (-1= Japanese, 0 = English etc
index++; index++;
if ((index >=0) && (index < 10)) if ((index >= 0) && (index < 10))
{ {
if (m_wNames.size() > (size_t)index) if (m_wNames.size() > (size_t)index)
{ {