From 55b08ca2e62ffcdd6287006823415e0faea18fe8 Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Sun, 1 Oct 2023 08:23:10 +0200 Subject: [PATCH] Suppress sporadic EAccessViolation on Wine in TMainForm.ShowStatusMsg --- source/main.pas | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/source/main.pas b/source/main.pas index b3e11e1e..abde7e61 100644 --- a/source/main.pas +++ b/source/main.pas @@ -1415,9 +1415,17 @@ begin if PanelNr = 6 then begin // Immediately repaint this special panel, as it holds critical update messages, // while avoiding StatusBar.Repaint which refreshes all panels - SendMessage(StatusBar.Handle, SB_GETRECT, PanelNr, Integer(@PanelRect)); - StatusBar.OnDrawPanel(StatusBar, StatusBar.Panels[PanelNr], PanelRect); - InvalidateRect(StatusBar.Handle, PanelRect, False); + try + SendMessage(StatusBar.Handle, SB_GETRECT, PanelNr, Integer(@PanelRect)); + StatusBar.OnDrawPanel(StatusBar, StatusBar.Panels[PanelNr], PanelRect); + InvalidateRect(StatusBar.Handle, PanelRect, False); + except + on E:EAccessViolation do begin + // Happening on Wine: Access violation at address 00000002FB43C1AA in module 'comctl32.dll'. + // Found in uploaded crash reports + LogSQL('TMainForm.ShowStatusMsg: '+E.Message, lcError); + end; + end; // Alternatives: //RedrawWindow(StatusBar.Handle, @PanelRect, 0, RDW_UPDATENOW); //UpdateWindow(StatusBar.Handle);