chiark / gitweb /
Patch from James H which initialises a couple of Windows API object
authorSimon Tatham <anakin@pobox.com>
Sat, 10 Sep 2005 08:31:22 +0000 (08:31 +0000)
committerSimon Tatham <anakin@pobox.com>
Sat, 10 Sep 2005 08:31:22 +0000 (08:31 +0000)
handles to NULL before accidentally trying to use them for anything.

[originally from svn r6282]

windows.c

index 72d0120357e33d9de37ebb96dfb36e125e7a86a3..6b900231b627046659322bb27799e8275b1873c3 100644 (file)
--- a/windows.c
+++ b/windows.c
@@ -1091,7 +1091,6 @@ static frontend *new_window(HINSTANCE inst, char *game_id, char **error)
     frontend *fe;
     int x, y;
     RECT r;
-    HDC hdc;
 
     fe = snew(frontend);
 
@@ -1150,7 +1149,8 @@ static frontend *new_window(HINSTANCE inst, char *game_id, char **error)
                                       WS_CHILD | WS_VISIBLE,
                                       0, 0, 0, 0, /* status bar does these */
                                       NULL, NULL, inst, NULL);
-    }
+    } else
+        fe->statusbar = NULL;
 
     get_max_puzzle_size(fe, &x, &y);
     midend_size(fe->me, &x, &y, FALSE);
@@ -1261,13 +1261,10 @@ static frontend *new_window(HINSTANCE inst, char *game_id, char **error)
        SetMenu(fe->hwnd, bar);
     }
 
-    new_game_size(fe);
+    fe->bitmap = NULL;
+    new_game_size(fe); /* initialises fe->bitmap */
     check_window_size(fe, &x, &y);
 
-    hdc = GetDC(fe->hwnd);
-    fe->bitmap = CreateCompatibleBitmap(hdc, x, y);
-    ReleaseDC(fe->hwnd, hdc);
-
     SetWindowLong(fe->hwnd, GWL_USERDATA, (LONG)fe);
 
     ShowWindow(fe->hwnd, SW_NORMAL);
@@ -1906,7 +1903,7 @@ static void new_game_size(frontend *fe)
        SetWindowPos(fe->statusbar, NULL, 0, y, x,
                     sr.bottom - sr.top, SWP_NOZORDER);
 
-    DeleteObject(fe->bitmap);
+    if (fe->bitmap) DeleteObject(fe->bitmap);
 
     hdc = GetDC(fe->hwnd);
     fe->bitmap = CreateCompatibleBitmap(hdc, x, y);