From 81bfc6dc8764b9d90e7722a992a358e6c8558b08 Mon Sep 17 00:00:00 2001 From: Sergey Udaltsov Date: Tue, 13 Apr 2004 21:21:06 +0000 Subject: no memory leaks necessary - just static data --- libxklavier/xklavier_config_xkb.c | 16 ++++++++++------ libxklavier/xklavier_private.h | 3 +++ libxklavier/xklavier_props.c | 3 --- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/libxklavier/xklavier_config_xkb.c b/libxklavier/xklavier_config_xkb.c index 1d0af43..a0ee621 100644 --- a/libxklavier/xklavier_config_xkb.c +++ b/libxklavier/xklavier_config_xkb.c @@ -36,13 +36,17 @@ static char *locale; static char* _XklGetRulesSet( void ) { - static char* rf = NULL; - if ( rf == NULL ) - if( !XklGetNamesProp( _xklAtoms[XKB_RF_NAMES_PROP_ATOM], &rf, NULL ) ) + static char rulesSet[_XKB_RF_NAMES_PROP_MAXLEN] = ""; + if ( !rulesSet[0] ) + { + char* rf = NULL; + if( !XklGetNamesProp( _xklAtoms[XKB_RF_NAMES_PROP_ATOM], &rf, NULL ) || ( rf == NULL ) ) return NULL; - XklDebug( 100, "Rules set: [%s]\n", rf ); - return rf; -//!! tiny memory leak which hopefully can be afforded + strncpy( rulesSet, rf, sizeof rulesSet ); + free( rf ); + } + XklDebug( 100, "Rules set: [%s]\n", rulesSet ); + return rulesSet; } Bool XklConfigLoadRegistry( void ) diff --git a/libxklavier/xklavier_private.h b/libxklavier/xklavier_private.h index d0a894e..6707450 100644 --- a/libxklavier/xklavier_private.h +++ b/libxklavier/xklavier_private.h @@ -108,6 +108,9 @@ extern char *_xklIndicatorNames[]; #define XKLAVIER_STATE_PROP_LENGTH 2 +// taken from XFree86 maprules.c +#define _XKB_RF_NAMES_PROP_MAXLEN 1024 + extern Atom _xklAtoms[]; extern Bool _xklAllowSecondaryGroupOnce; diff --git a/libxklavier/xklavier_props.c b/libxklavier/xklavier_props.c index 83518f4..f0363a6 100644 --- a/libxklavier/xklavier_props.c +++ b/libxklavier/xklavier_props.c @@ -206,9 +206,6 @@ Bool XklRestoreNamesProp( ) return rv; } -// taken from XFree86 maprules.c -#define _XKB_RF_NAMES_PROP_MAXLEN 1024 - Bool XklGetNamesProp( Atom rulesAtom, char **rulesFileOut, XklConfigRecPtr data ) { -- cgit v1.2.1