Big Endian Fixes, LCID support (must be paired with LCID-Charset support on the .hhp interpretation side)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31053 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -595,7 +595,9 @@ wxChmInputStream::CreateHHPStream()
|
|||||||
{
|
{
|
||||||
// Read #SYSTEM-Code and length
|
// Read #SYSTEM-Code and length
|
||||||
i->Read(&code, 2);
|
i->Read(&code, 2);
|
||||||
|
code = wxUINT16_SWAP_ON_BE( code ) ;
|
||||||
i->Read(&len, 2);
|
i->Read(&len, 2);
|
||||||
|
len = wxUINT16_SWAP_ON_BE( len ) ;
|
||||||
// data
|
// data
|
||||||
buf = malloc(len);
|
buf = malloc(len);
|
||||||
i->Read(buf, len);
|
i->Read(buf, len);
|
||||||
@@ -625,7 +627,19 @@ wxChmInputStream::CreateHHPStream()
|
|||||||
out->Write( (const void *) tmp, strlen(tmp));
|
out->Write( (const void *) tmp, strlen(tmp));
|
||||||
tmp = NULL;
|
tmp = NULL;
|
||||||
break;
|
break;
|
||||||
case 4: // STRUCT
|
case 4: // STRUCT SYSTEM INFO
|
||||||
|
tmp = NULL ;
|
||||||
|
if ( len >= 28 )
|
||||||
|
{
|
||||||
|
char *structptr = (char*) buf ;
|
||||||
|
// LCID at position 0
|
||||||
|
wxUint32 dummy = *((wxUint32 *)(structptr+0)) ;
|
||||||
|
wxUint32 lcid = wxUINT32_SWAP_ON_BE( dummy ) ;
|
||||||
|
wxString msg ;
|
||||||
|
msg.Printf("Language=0x%X\r\n",lcid) ;
|
||||||
|
out->Write(msg.c_str() , msg.Length() ) ;
|
||||||
|
}
|
||||||
|
break ;
|
||||||
default:
|
default:
|
||||||
tmp=NULL;
|
tmp=NULL;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user