summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Udaltsov <svu@gnome.org>2004-04-13 21:21:06 +0000
committerSergey Udaltsov <svu@gnome.org>2004-04-13 21:21:06 +0000
commit81bfc6dc8764b9d90e7722a992a358e6c8558b08 (patch)
treedf0f21dd898df877f93b452ac30434b3a93ab9d2
parentece30c7702cf5a510a91fb113c7cddf5452aa2be (diff)
downloadlibxklavier-81bfc6dc8764b9d90e7722a992a358e6c8558b08.tar.gz
no memory leaks necessary - just static data
-rw-r--r--libxklavier/xklavier_config_xkb.c16
-rw-r--r--libxklavier/xklavier_private.h3
-rw-r--r--libxklavier/xklavier_props.c3
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 )
{