mirror of https://github.com/PCSX2/pcsx2.git
Quick fix for TOTA crashing/freezing at startup; caused by a sign extension bug in the new Shift-JIS -> Unicode text converter.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2141 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
35ec28eb48
commit
285ead05ec
|
@ -802,7 +802,8 @@ static const wchar_t* TwoBytes[256] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// requires two bytes on input (second CAN be 0), returns unicode mapping, assigns used bytes (1/2)
|
// requires two bytes on input (second CAN be 0), returns unicode mapping, assigns used bytes (1/2)
|
||||||
wchar_t ShiftJIS_ConvertChar(const char* input, int& used)
|
// This function takes a u8 by design - we do NOT want sign extension of the characters!!
|
||||||
|
wchar_t ShiftJIS_ConvertChar(const u8* input, int& used)
|
||||||
{
|
{
|
||||||
const uint FirstByte = input[0];
|
const uint FirstByte = input[0];
|
||||||
|
|
||||||
|
@ -832,13 +833,15 @@ wxString ShiftJIS_ConvertString( const char* src )
|
||||||
{
|
{
|
||||||
wxString result;
|
wxString result;
|
||||||
|
|
||||||
// The length of the sresult (in chars) cannot exceed the length of the source.
|
// Implementation Notes:
|
||||||
|
// * The length of the result (in chars) cannot exceed the length of the source.
|
||||||
|
|
||||||
result.reserve( strlen(src) );
|
result.reserve( strlen(src) );
|
||||||
|
|
||||||
while( *src != 0 )
|
while( *src != 0 )
|
||||||
{
|
{
|
||||||
int skip;
|
int skip;
|
||||||
result += ShiftJIS_ConvertChar( src, skip );
|
result += ShiftJIS_ConvertChar( (u8*)src, skip );
|
||||||
src += skip;
|
src += skip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -849,7 +852,7 @@ wxString ShiftJIS_ConvertString( const char* src, int maxlen )
|
||||||
{
|
{
|
||||||
wxString result;
|
wxString result;
|
||||||
|
|
||||||
// The length of the sresult (in chars) cannot exceed the length of the source.
|
// The length of the result (in chars) cannot exceed the length of the source.
|
||||||
result.reserve( maxlen );
|
result.reserve( maxlen );
|
||||||
|
|
||||||
const char* endpt = src + maxlen;
|
const char* endpt = src + maxlen;
|
||||||
|
@ -857,7 +860,7 @@ wxString ShiftJIS_ConvertString( const char* src, int maxlen )
|
||||||
while( (*src != 0) && (src < endpt) )
|
while( (*src != 0) && (src < endpt) )
|
||||||
{
|
{
|
||||||
int skip;
|
int skip;
|
||||||
result += ShiftJIS_ConvertChar( src, skip );
|
result += ShiftJIS_ConvertChar( (u8*)src, skip );
|
||||||
src += skip;
|
src += skip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -291,8 +291,6 @@ void vtlb_dynarec_init()
|
||||||
// clear the buffer to 0xcc (easier debugging).
|
// clear the buffer to 0xcc (easier debugging).
|
||||||
memset_8<0xcc,0x1000>( m_IndirectDispatchers );
|
memset_8<0xcc,0x1000>( m_IndirectDispatchers );
|
||||||
|
|
||||||
//u8* baseptr = m_IndirectDispatchers;
|
|
||||||
|
|
||||||
for( int mode=0; mode<2; ++mode )
|
for( int mode=0; mode<2; ++mode )
|
||||||
{
|
{
|
||||||
for( int bits=0; bits<5; ++bits )
|
for( int bits=0; bits<5; ++bits )
|
||||||
|
|
Loading…
Reference in New Issue