diff --git a/modules/juce_events/native/juce_win32_Messaging.cpp b/modules/juce_events/native/juce_win32_Messaging.cpp index 7c027529b8..36621acb69 100644 --- a/modules/juce_events/native/juce_win32_Messaging.cpp +++ b/modules/juce_events/native/juce_win32_Messaging.cpp @@ -38,15 +38,16 @@ namespace WindowsMessageHelpers void dispatchMessageFromLParam (LPARAM lParam) { - MessageManager::MessageBase* const message = reinterpret_cast (lParam); - - JUCE_TRY + if (MessageManager::MessageBase* const message = reinterpret_cast (lParam)) { - message->messageCallback(); - } - JUCE_CATCH_EXCEPTION + JUCE_TRY + { + message->messageCallback(); + } + JUCE_CATCH_EXCEPTION - message->decReferenceCount(); + message->decReferenceCount(); + } } //============================================================================== @@ -64,22 +65,27 @@ namespace WindowsMessageHelpers if (message == broadcastId) { - const ScopedPointer messageString ((String*) lParam); - MessageManager::getInstance()->deliverBroadcastMessage (*messageString); + if (String* const m = reinterpret_cast (lParam)) + { + const ScopedPointer messageString (m); + MessageManager::getInstance()->deliverBroadcastMessage (*m); + } + return 0; } if (message == WM_COPYDATA) { - const COPYDATASTRUCT* const data = reinterpret_cast (lParam); - - if (data->dwData == broadcastId) + if (const COPYDATASTRUCT* const data = reinterpret_cast (lParam)) { - const String messageString (CharPointer_UTF32 ((const CharPointer_UTF32::CharType*) data->lpData), - data->cbData / sizeof (CharPointer_UTF32::CharType)); + if (data->dwData == broadcastId) + { + const String messageString (CharPointer_UTF32 ((const CharPointer_UTF32::CharType*) data->lpData), + data->cbData / sizeof (CharPointer_UTF32::CharType)); - PostMessage (juce_messageWindowHandle, broadcastId, 0, (LPARAM) new String (messageString)); - return 0; + PostMessage (juce_messageWindowHandle, broadcastId, 0, (LPARAM) new String (messageString)); + return 0; + } } } }