| [AD] win_set_window problem? | 
[ Thread Index | 
Date Index
| More lists.liballeg.org/allegro-developers Archives
] 
It seems win_set_window, if called with NULL or being reinitialized, may 
cause certain parts of Allegro to be initialized when they're not 
supposed to. The problem is here:
static void exit_window_modules(struct WINDOW_MODULES *wm)
{
   if (wm)
      memset(wm, 0, sizeof(wm));
   ...
}
This will only zero-out the first four bytes of the structure and may 
leave certain parts non-zero (and thus later reinitialize portions of 
Allegro that shouldn't be). The attached patch 0's it all out.
- Kitty Cat
Index: src/win/wwnd.c
===================================================================
RCS file: /cvsroot/alleg/allegro/src/win/wwnd.c,v
retrieving revision 1.80
diff -u -r1.80 wwnd.c
--- src/win/wwnd.c	15 Sep 2004 06:20:13 -0000	1.80
+++ src/win/wwnd.c	19 Sep 2004 04:14:13 -0000
@@ -119,7 +119,7 @@
 static void exit_window_modules(struct WINDOW_MODULES *wm)
 {
    if (wm)
-      memset(wm, 0, sizeof(wm));
+      memset(wm, 0, sizeof(struct WINDOW_MODULES));
 
    if (_keyboard_installed) {
      if (wm)