From: Vadim Zeitlin Date: Mon, 21 Jan 2013 11:28:50 +0000 (+0000) Subject: Fix a crash in wxExecute() in wxMSW too. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/b640fa17f3359e2766232e5dae3922de28236bde Fix a crash in wxExecute() in wxMSW too. Don't dereference potentially NULL wxProcess pointer unconditionally. This should have been together with the changes of r73425, see #14931. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73426 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/msw/utilsexc.cpp b/src/msw/utilsexc.cpp index 7198e1106f..9c959de05e 100644 --- a/src/msw/utilsexc.cpp +++ b/src/msw/utilsexc.cpp @@ -862,23 +862,26 @@ long wxExecute(const wxString& cmd, int flags, wxProcess *handler, } // Translate wxWidgets priority to Windows conventions. - unsigned prio = handler->GetPriority(); - if ( prio <= 20 ) - dwFlags |= IDLE_PRIORITY_CLASS; - else if ( prio <= 40 ) - dwFlags |= BELOW_NORMAL_PRIORITY_CLASS; - else if ( prio <= 60 ) - dwFlags |= NORMAL_PRIORITY_CLASS; - else if ( prio <= 80 ) - dwFlags |= ABOVE_NORMAL_PRIORITY_CLASS; - else if ( prio <= 99 ) - dwFlags |= HIGH_PRIORITY_CLASS; - else if ( prio <= 100 ) - dwFlags |= REALTIME_PRIORITY_CLASS; - else + if ( handler ) { - wxFAIL_MSG(wxT("invalid value of thread priority parameter")); - dwFlags |= THREAD_PRIORITY_NORMAL; + unsigned prio = handler->GetPriority(); + if ( prio <= 20 ) + dwFlags |= IDLE_PRIORITY_CLASS; + else if ( prio <= 40 ) + dwFlags |= BELOW_NORMAL_PRIORITY_CLASS; + else if ( prio <= 60 ) + dwFlags |= NORMAL_PRIORITY_CLASS; + else if ( prio <= 80 ) + dwFlags |= ABOVE_NORMAL_PRIORITY_CLASS; + else if ( prio <= 99 ) + dwFlags |= HIGH_PRIORITY_CLASS; + else if ( prio <= 100 ) + dwFlags |= REALTIME_PRIORITY_CLASS; + else + { + wxFAIL_MSG(wxT("invalid value of thread priority parameter")); + dwFlags |= NORMAL_PRIORITY_CLASS; + } } bool ok = ::CreateProcess