summaryrefslogtreecommitdiff
path: root/libxklavier/xklavier.c
diff options
context:
space:
mode:
authorSergey Udaltsov <svu@gnome.org>2004-11-02 01:36:25 +0000
committerSergey Udaltsov <svu@gnome.org>2004-11-02 01:36:25 +0000
commit6b41cdb4b6d67d8095c6b9eefa7003ec8a44ca87 (patch)
tree6453f0bc477745ecc84834869bd4ba276ad2a02a /libxklavier/xklavier.c
parent253e818f948d458efd1d9df8558be22db9c161b1 (diff)
downloadlibxklavier-6b41cdb4b6d67d8095c6b9eefa7003ec8a44ca87.tar.gz
Ensuring VTable is initialized - before using it.
Diffstat (limited to 'libxklavier/xklavier.c')
-rw-r--r--libxklavier/xklavier.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/libxklavier/xklavier.c b/libxklavier/xklavier.c
index a9c718a..0ce8a53 100644
--- a/libxklavier/xklavier.c
+++ b/libxklavier/xklavier.c
@@ -37,7 +37,7 @@ int _xklDebugLevel = 0;
Window _xklPrevAppWindow;
-XklVTable *xklVTable;
+XklVTable *xklVTable = NULL;
XklConfigCallback _xklConfigCallback = NULL;
void *_xklConfigCallbackData;
@@ -698,41 +698,58 @@ Bool _XklIsTransparentAppWindow( Window appWin )
return False;
}
+void _XklEnsureVTableInited( void )
+{
+ if ( xklVTable == NULL )
+ {
+ XklDebug( 0, "ERROR: XKL VTable is NOT initialized.\n" );
+ /* force the crash! */
+ char *p = NULL; *p = '\0';
+ }
+}
+
/**
* Calling through vtable
*/
const char **XklGetGroupNames( void )
{
+ _XklEnsureVTableInited();
return (*xklVTable->xklGetGroupNamesHandler)();
}
unsigned XklGetNumGroups( void )
{
+ _XklEnsureVTableInited();
return (*xklVTable->xklGetNumGroupsHandler)();
}
void XklLockGroup( int group )
{
+ _XklEnsureVTableInited();
(*xklVTable->xklLockGroupHandler)( group );
}
int XklPauseListen( void )
{
+ _XklEnsureVTableInited();
return (*xklVTable->xklPauseListenHandler)();
}
int XklResumeListen( void )
{
+ _XklEnsureVTableInited();
return (*xklVTable->xklResumeListenHandler)();
}
Bool _XklLoadAllInfo( void )
{
+ _XklEnsureVTableInited();
return (*xklVTable->xklLoadAllInfoHandler)();
}
void _XklFreeAllInfo( void )
{
+ _XklEnsureVTableInited();
(*xklVTable->xklFreeAllInfoHandler)();
}