From: Christophe CURIS <christophe.cu...@free.fr>

Some header were creating variable, this is a bad practice which
is likely to not behave as expected. This creates one distinct
variable in each object file that used the header, and:

 - on well behaved compiler, this ends up in a link error (see
commit 39fdb451ba6ff84430507e327fa01a43f40b7315 for an example)

 - on bad behaving compiler, this can be linked as multiple local
variable, thus having strange effects when running program

 - on insouciant compiler (who said gcc?) the variables are
silently merged, hiding portability issues
---
 src/screen.c     |    5 +++++
 src/screen.h     |    4 ++--
 util/wmmenugen.c |    4 ++++
 util/wmmenugen.h |    4 ++--
 4 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/screen.c b/src/screen.c
index 37e4da3..c61aa1f 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -81,6 +81,11 @@ extern int wScreenCount;
 extern int wXkbSupported;
 #endif
 
+#ifdef HAVE_XRANDR
+Bool has_randr;
+int randr_event_base;
+#endif
+
 extern WDDomain *WDWindowMaker;
 
 /**** Local ****/
diff --git a/src/screen.h b/src/screen.h
index 861983f..be27cdb 100644
--- a/src/screen.h
+++ b/src/screen.h
@@ -36,8 +36,8 @@
 #define WTB_MENU 6
 
 #ifdef HAVE_XRANDR
-Bool has_randr;
-int randr_event_base;
+extern Bool has_randr;
+extern int randr_event_base;
 #endif
 
 typedef struct {
diff --git a/util/wmmenugen.c b/util/wmmenugen.c
index 82ad8ce..ac3846b 100644
--- a/util/wmmenugen.c
+++ b/util/wmmenugen.c
@@ -45,6 +45,10 @@ char *terminal;
 
 extern char *__progname;
 
+/* Global Variables from wmmenugen.h */
+WMTreeNode *menu;
+char *env_lang, *env_ctry, *env_enc, *env_mod;
+
 int main(int argc, char **argv)
 {
        struct stat st;
diff --git a/util/wmmenugen.h b/util/wmmenugen.h
index cdefbe9..3a60ab2 100644
--- a/util/wmmenugen.h
+++ b/util/wmmenugen.h
@@ -46,9 +46,9 @@ typedef struct {
 
 /* the abstract menu tree
  */
-WMTreeNode *menu;
+extern WMTreeNode *menu;
 
-char *env_lang, *env_ctry, *env_enc, *env_mod;
+extern char *env_lang, *env_ctry, *env_enc, *env_mod;
 
 /* wmmenu_misc.c
  */
-- 
1.7.10.4


-- 
To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.

Reply via email to