hack: adjust C locale to supported form under HP-UX, otherwise we crash on startup
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35835 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -210,6 +210,38 @@ bool wxApp::OnInitGui()
|
|||||||
if( !wxAppBase::OnInitGui() )
|
if( !wxAppBase::OnInitGui() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
#ifdef __HPUX__
|
||||||
|
// under HP-UX creating XmFontSet fails when the system locale is C and
|
||||||
|
// we're using a remote DISPLAY, presumably because HP-UX uses its own
|
||||||
|
// names for C and ISO locales (roman8 and iso8859n respectively) and so
|
||||||
|
// its Motif libraries have troubles with non-HP X server
|
||||||
|
//
|
||||||
|
// whatever the reason, the fact is that without this hack any wxMotif
|
||||||
|
// program crashes on startup because it can't create any font (HP programs
|
||||||
|
// still work but they do spit out messages about failing to create font
|
||||||
|
// sets and failing back on "fixed" font too)
|
||||||
|
//
|
||||||
|
// notice that calling setlocale() here is not enough because X(m) init
|
||||||
|
// functions call setlocale() later so we really have to change environment
|
||||||
|
bool fixAll = false; // tweak LC_ALL (or just LC_CTYPE)?
|
||||||
|
const char *loc = getenv("LC_CTYPE");
|
||||||
|
if ( !loc )
|
||||||
|
{
|
||||||
|
loc = getenv("LC_ALL");
|
||||||
|
if ( loc )
|
||||||
|
fixAll = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !loc ||
|
||||||
|
(loc[0] == 'C' && loc[1] == '\0') ||
|
||||||
|
strcmp(loc, "POSIX") == 0 )
|
||||||
|
{
|
||||||
|
// we're using C locale, "fix" it
|
||||||
|
wxLogDebug(_T("HP-UX fontset hack: forcing locale to en_US.iso88591"));
|
||||||
|
putenv(fixAll ? "LC_ALL=en_US.iso88591" : "LC_CTYPE=en_US.iso88591");
|
||||||
|
}
|
||||||
|
#endif // __HPUX__
|
||||||
|
|
||||||
XtSetLanguageProc(NULL, NULL, NULL);
|
XtSetLanguageProc(NULL, NULL, NULL);
|
||||||
XtToolkitInitialize() ;
|
XtToolkitInitialize() ;
|
||||||
wxTheApp->m_appContext = (WXAppContext) XtCreateApplicationContext();
|
wxTheApp->m_appContext = (WXAppContext) XtCreateApplicationContext();
|
||||||
|
Reference in New Issue
Block a user