From ecdc4787986c311d9b5a35caf46dfd8b36fed0f0 Mon Sep 17 00:00:00 2001 From: paul Date: Mon, 26 Dec 2011 06:59:11 +0000 Subject: [PATCH] gtk, gtk2: fix crash in SetSysColors git-svn-id: trunk@34419 - --- lcl/interfaces/gtk/gtkwinapi.inc | 12 ++++-------- lcl/interfaces/gtk2/gtk2winapi.inc | 12 ++++-------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/lcl/interfaces/gtk/gtkwinapi.inc b/lcl/interfaces/gtk/gtkwinapi.inc index 02bbba47fb..5cc8620344 100644 --- a/lcl/interfaces/gtk/gtkwinapi.inc +++ b/lcl/interfaces/gtk/gtkwinapi.inc @@ -9246,9 +9246,6 @@ end; ------------------------------------------------------------------------------} function TGtkWidgetSet.SetSysColors(cElements: Integer; const lpaElements; const lpaRgbValues): Boolean; -type - TLongArray = array[0..0] of Longint; - PLongArray = ^TLongArray; var n: Integer; Element: LongInt; @@ -9258,11 +9255,10 @@ begin for n := 0 to cElements - 1 do begin - Element := PLongArray(lpaElements)^[n]; - if (Element > MAX_SYS_COLORS) - or (Element < 0) - then Exit; - SysColorMap[PLongArray(lpaElements)^[n]] := PLongArray(lpaRgbValues)^[n]; + Element := PInteger(lpaElements)[n]; + if (Element > MAX_SYS_COLORS) or (Element < 0) then + Exit; + SysColorMap[Element] := PDword(@lpaRgbValues)[n]; //DebugLn(Format('Trace:[TGtkWidgetSet.SetSysColor] Index %d (%8x) --> %8x', [PLongArray(lpaElements)^[n], SysColorMap[PLongArray(lpaElements)^[n]], PLongArray(lpaRgbValues)^[n]])); end; diff --git a/lcl/interfaces/gtk2/gtk2winapi.inc b/lcl/interfaces/gtk2/gtk2winapi.inc index 630078bab5..7942b5ac89 100644 --- a/lcl/interfaces/gtk2/gtk2winapi.inc +++ b/lcl/interfaces/gtk2/gtk2winapi.inc @@ -8625,9 +8625,6 @@ end; ------------------------------------------------------------------------------} function TGtk2WidgetSet.SetSysColors(cElements: Integer; const lpaElements; const lpaRgbValues): Boolean; -type - TLongArray = array[0..0] of Longint; - PLongArray = ^TLongArray; var n: Integer; Element: LongInt; @@ -8637,11 +8634,10 @@ begin for n := 0 to cElements - 1 do begin - Element := PLongArray(lpaElements)^[n]; - if (Element > MAX_SYS_COLORS) - or (Element < 0) - then Exit; - SysColorMap[PLongArray(lpaElements)^[n]] := PLongArray(lpaRgbValues)^[n]; + Element := PInteger(lpaElements)[n]; + if (Element > MAX_SYS_COLORS) or (Element < 0) then + Exit; + SysColorMap[Element] := PDword(@lpaRgbValues)[n]; //DebugLn(Format('Trace:[TGtk2WidgetSet.SetSysColor] Index %d (%8x) --> %8x', [PLongArray(lpaElements)^[n], SysColorMap[PLongArray(lpaElements)^[n]], PLongArray(lpaRgbValues)^[n]])); end;