]> git.saurik.com Git - wxWidgets.git/commitdiff
memory debugging using VC++ debug CRT works for DLL wxWin builds as well.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 31 Jan 1999 23:32:58 +0000 (23:32 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 31 Jan 1999 23:32:58 +0000 (23:32 +0000)
The relevant macros are now in include/wx/msw/msvcrt.h

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1540 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/msvcrt.h [new file with mode: 0644]
src/msw/app.cpp
src/msw/dummy.cpp

diff --git a/include/wx/msw/msvcrt.h b/include/wx/msw/msvcrt.h
new file mode 100644 (file)
index 0000000..289756e
--- /dev/null
@@ -0,0 +1,49 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/msw/msvcrt.h
+// Purpose:     macros to use some non-standard features of MS Visual C++
+//              C run-time library
+// Author:      Vadim Zeitlin
+// Modified by:
+// Created:     31.01.1999
+// RCS-ID:      $Id$
+// Copyright:   (c) Vadim Zeitlin
+// Licence:     wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+// the goal of this file is to define wxCrtSetDbgFlag() macro which may be
+// used like this:
+//      wxCrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF);
+// to turn on memory leak checks for programs compiled with Microsoft Visual
+// C++ (5.0+). The macro will expand to nothing under other compilers.
+
+#ifndef _MSW_MSVCRT_H_
+#define _MSW_MSVCRT_H_
+
+// use debug CRT functions for memory leak detections in VC++ if we're not
+// using wxWindows own methods
+#if defined(__WXDEBUG__) && defined(_MSC_VER) && !wxUSE_GLOBAL_MEMORY_OPERATORS && !defined(__NO_VC_CRTDBG__)
+    #define wxUSE_VC_CRTDBG
+#else
+    #undef wxUSE_VC_CRTDBG
+#endif
+
+#ifdef wxUSE_VC_CRTDBG
+    // VC++ uses this macro as debug/release mode indicator
+    #ifndef _DEBUG
+        #define _DEBUG
+    #endif
+
+    // Need to undef new if including crtdbg.h which redefines new itself
+    #ifdef new
+        #undef new
+    #endif
+
+    #include <crtdbg.h>
+
+    #define wxCrtSetDbgFlag(flag) \
+        _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | (flag))
+#else // !using VC CRT
+    #define wxCrtSetDbgFlag(flag)
+#endif // wxUSE_VC_CRTDBG
+
+#endif // _MSW_MSVCRT_H_
\ No newline at end of file
index de98ccfba20ad7b531f6ec3d9157966b0fc537c5..4366ad4350db59f116ad3dc3470a480d7a3f3348 100644 (file)
 // Also, OLE is used not just for drag and drop (it's used by automatn.cpp).
 // #if wxUSE_DRAG_AND_DROP
 #if !defined(__GNUWIN32__) && !defined(__SC__) && !defined(__SALFORDC__)
-#include <ole2.h>
+    #include <ole2.h>
 #endif
 
-// #endif
-
 #include <string.h>
 #include <ctype.h>
 
   #include <commctrl.h>
 #endif
 
-// use debug CRT functions for memory leak detections in VC++ if we're not
-// using wxWindows own methods
-#if defined(__WXDEBUG__) && defined(_MSC_VER) && !wxUSE_GLOBAL_MEMORY_OPERATORS && !defined(__NO_VC_CRTDBG__)
-    #define wxUSE_VC_CRTDBG
-#else
-    #undef wxUSE_VC_CRTDBG
-#endif
-
-#ifdef wxUSE_VC_CRTDBG
-  // VC++ uses this macro as debug/release mode indicator
-  #ifndef _DEBUG
-    #define _DEBUG
-  #endif
-
-  /* Need to undef new if including crtdbg.h */
-  #ifdef new
-    #undef new
-  #endif
-
-  #include <crtdbg.h>
-
-  #if defined(__WXDEBUG__) && wxUSE_GLOBAL_MEMORY_OPERATORS && wxUSE_DEBUG_NEW_ALWAYS
-    #define new new(__FILE__,__LINE__)
-  #endif
-#endif // wxUSE_VC_CRTDBG
+#include "wx/msw/msvcrt.h"
 
 extern char *wxBuffer;
 extern char *wxOsVersion;
@@ -163,13 +137,6 @@ bool wxApp::Initialize()
 
     wxBuffer = new char[1500];
 
-#ifdef wxUSE_VC_CRTDBG
-    // do check for memory leaks on program exit
-    // (another useful flag is _CRTDBG_DELAY_FREE_MEM_DF which doesn't free
-    //  deallocated memory which may be used to simulate low-memory condition)
-    _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
-#endif // debug build under MS VC++
-
     wxClassInfo::InitializeClasses();
 
 #if wxUSE_RESOURCES
@@ -258,8 +225,7 @@ bool wxApp::Initialize()
 
     wxWinHandleList = new wxList(wxKEY_INTEGER);
 
-    // This is to foil optimizations in Visual C++ that
-    // throw out dummy.obj.
+    // This is to foil optimizations in Visual C++ that throw out dummy.obj.
     // PLEASE DO NOT ALTER THIS.
 #if defined(_MSC_VER) && !defined(WXMAKINGDLL)
     extern char wxDummyChar;
@@ -590,6 +556,11 @@ int wxEntry(WXHINSTANCE hInstance,
             int nCmdShow,
             bool enterLoop)
 {
+    // do check for memory leaks on program exit
+    // (another useful flag is _CRTDBG_DELAY_FREE_MEM_DF which doesn't free
+    //  deallocated memory which may be used to simulate low-memory condition)
+    wxCrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF);
+
   // take everything into a try-except block in release build
   // FIXME other compilers must support Win32 SEH (structured exception
   //       handling) too, just find the appropriate keyword in their docs!
index 83850c956c74650a0c92936f7cb49547e589d829..1a2876a2b91613e17d96eee87350e1cd3b6d16af 100644 (file)
@@ -7,8 +7,6 @@
  * Copyright:   (c) 1993, AIAI, University of Edinburgh
  */
 
-/* static const char sccsid[] = "@(#)dummy.cc  1.2 5/9/94"; */
-
 /* A dummy file to include wx.h. If precompiling wx.h, I
  * always start by compiling this and producing the PCH file.
  * Then subsequent source files use the PCH file.
@@ -22,8 +20,6 @@
  * This will produce a big PCH file.
  */
 
-
-
 #if defined(__BORLANDC__)
 #if !(defined(__WIN32__) || defined(__NT__) || defined(__WIN32__))
 #pragma hdrfile "c:\wx\src\msw\wx.pch"
 #endif
 
 #include "wx/wxprec.h"
-#include "windows.h"
 
 #ifdef __BORLANDC__
-#pragma hdrstop
+    #pragma hdrstop
 #endif
 
+#include <windows.h>
+
+#include "wx/msw/msvcrt.h"
+
 // Foils optimizations in Visual C++ (see also app.cpp). Without it,
 // dummy.obj isn't linked and we get a linker error.
 #if defined(_MSC_VER)
-char wxDummyChar=0;
+    char wxDummyChar = 0;
 #endif
 
+// if wxWindows is in the DLL link our entry point with the application
 #if defined(WXUSINGDLL)
 
 // NT defines APIENTRY, 3.x not
 #if !defined(APIENTRY)
-#define APIENTRY FAR PASCAL
+    #define APIENTRY FAR PASCAL
 #endif
  
+int
 #ifdef __WATCOMC__
-int PASCAL
+    PASCAL
 #else
-int APIENTRY
+    APIENTRY
 #endif
-
- WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR m_lpCmdLine,
-                    int nCmdShow )
+WinMain(HINSTANCE hInstance,
+        HINSTANCE hPrevInstance,
+        LPSTR m_lpCmdLine,
+        int nCmdShow )
 {
-  return wxEntry((WXHINSTANCE) hInstance, (WXHINSTANCE) hPrevInstance, m_lpCmdLine, nCmdShow);
+    wxCrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF);
+
+    return wxEntry((WXHINSTANCE) hInstance, (WXHINSTANCE) hPrevInstance,
+                   m_lpCmdLine, nCmdShow);
 }
 #endif