]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/app.cpp
avoiding warning because of missing define
[wxWidgets.git] / src / msw / app.cpp
index 32779c348d776699b85e21e4d0f5e6e039fa5f63..ae797329c26f7916ba54a2ecf7440f068f90c90e 100644 (file)
@@ -50,6 +50,7 @@
 #include "wx/dynlib.h"
 #include "wx/evtloop.h"
 #include "wx/thread.h"
+#include "wx/scopeguard.h"
 
 #include "wx/msw/private.h"
 #include "wx/msw/dc.h"
     typedef HRESULT (CALLBACK* DLLGETVERSIONPROC)(DLLVERSIONINFO *);
 #endif // defined(DLLVERSIONINFO)
 
+#ifndef ATTACH_PARENT_PROCESS
+    #define ATTACH_PARENT_PROCESS ((DWORD)-1)
+#endif
 
 // ---------------------------------------------------------------------------
 // global variables
@@ -477,8 +481,19 @@ int wxConsoleStderr::GetCommandHistory(wxWxCharBuffer& buf) const
     if ( len )
     {
         buf.extend(len);
-        const int len2 = m_pfnGetConsoleCommandHistory(buf.data(), len, CMD_EXE);
-        wxASSERT_MSG( len2 == len, _T("failed getting history?") );
+
+        int len2 = m_pfnGetConsoleCommandHistory(buf.data(), len, CMD_EXE);
+
+#if !wxUSE_UNICODE
+        // there seems to be a bug in the GetConsoleCommandHistoryA(), it
+        // returns the length of Unicode string and not ANSI one
+        len2 /= 2;
+#endif // !wxUSE_UNICODE
+
+        if ( len2 != len )
+        {
+            wxFAIL_MSG( _T("failed getting history?") );
+        }
     }
 
     return len;
@@ -1053,12 +1068,6 @@ bool wxApp::Yield(bool onlyIfNeeded)
     // MT-FIXME
     static bool s_inYield = false;
 
-#if wxUSE_LOG
-    // disable log flushing from here because a call to wxYield() shouldn't
-    // normally result in message boxes popping up &c
-    wxLog::Suspend();
-#endif // wxUSE_LOG
-
     if ( s_inYield )
     {
         if ( !onlyIfNeeded )
@@ -1069,7 +1078,20 @@ bool wxApp::Yield(bool onlyIfNeeded)
         return false;
     }
 
+    // set the flag and don't forget to reset it before returning
     s_inYield = true;
+    wxON_BLOCK_EXIT_SET(s_inYield, false);
+
+
+#if wxUSE_LOG
+    // disable log flushing from here because a call to wxYield() shouldn't
+    // normally result in message boxes popping up &c
+    wxLog::Suspend();
+
+    // ensure the logs will be flashed again when we exit
+    wxON_BLOCK_EXIT0(wxLog::Resume);
+#endif // wxUSE_LOG
+
 
     // we don't want to process WM_QUIT from here - it should be processed in
     // the main event loop in order to stop it
@@ -1089,13 +1111,6 @@ bool wxApp::Yield(bool onlyIfNeeded)
     // if there are pending events, we must process them.
     ProcessPendingEvents();
 
-#if wxUSE_LOG
-    // let the logs be flashed again
-    wxLog::Resume();
-#endif // wxUSE_LOG
-
-    s_inYield = false;
-
     return true;
 }