From 1ea463f9891bc5c7fc2f6a5d7f586ce1de9c2edd Mon Sep 17 00:00:00 2001 From: ed Date: Fri, 7 Jun 2019 15:08:49 +0100 Subject: [PATCH] Linux: Fixed some crashes when getting X properties in LinuxComponentPeer --- .../native/juce_linux_X11_Windowing.cpp | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp b/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp index 1c386c74b7..ceb49e1893 100644 --- a/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp +++ b/modules/juce_gui_basics/native/juce_linux_X11_Windowing.cpp @@ -1299,14 +1299,16 @@ public: ScopedXLock xlock (display); GetXProperty prop (display, windowH, atoms->state, 0, 64, false, atoms->state); - unsigned long state; - memcpy (&state, prop.data, sizeof (unsigned long)); + if (prop.success && prop.actualType == atoms->state + && prop.actualFormat == 32 && prop.numItems > 0) + { + unsigned long state; + memcpy (&state, prop.data, sizeof (unsigned long)); + + return state == IconicState; + } - return prop.success - && prop.actualType == atoms->state - && prop.actualFormat == 32 - && prop.numItems > 0 - && state == IconicState; + return false; } void setFullScreen (bool shouldBeFullScreen) override @@ -2757,10 +2759,14 @@ private: long getUserTime() const { GetXProperty prop (display, windowH, atoms->userTime, 0, 65536, false, XA_CARDINAL); + + if (! prop.success) + return 0; + long result; memcpy (&result, prop.data, sizeof (long)); - return prop.success ? result : 0; + return result; } void updateBorderSize()