From 829ed3c0f80d2870bf65ef608d98fa30b7c029d7 Mon Sep 17 00:00:00 2001 From: paul Date: Fri, 23 May 2008 11:36:55 +0000 Subject: [PATCH] lcl: safer gdi handles typecasting git-svn-id: trunk@15214 - --- lcl/include/brush.inc | 4 ++-- lcl/include/canvas.inc | 8 ++++---- lcl/include/font.inc | 4 ++-- lcl/include/pen.inc | 6 +++--- lcl/include/region.inc | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lcl/include/brush.inc b/lcl/include/brush.inc index 6e78516a7b..9cb654d02f 100644 --- a/lcl/include/brush.inc +++ b/lcl/include/brush.inc @@ -21,7 +21,7 @@ procedure TBrushHandleCache.RemoveItem(Item: TResourceCacheItem); begin - DeleteObject(Item.Handle); + DeleteObject(HGIOBJ(Item.Handle)); inherited RemoveItem(Item); end; @@ -179,7 +179,7 @@ begin CacheItem.DecreaseRefCount; FBrushHandleCached := False; end else - DeleteObject(FReference.Handle); + DeleteObject(HGDIOBJ(FReference.Handle)); FReference._lclHandle := 0; end; diff --git a/lcl/include/canvas.inc b/lcl/include/canvas.inc index 6d7438d35b..78f2335320 100644 --- a/lcl/include/canvas.inc +++ b/lcl/include/canvas.inc @@ -130,7 +130,7 @@ var begin //DebugLn('[TCanvas.CreateBrush] ',Classname,' Self=',DbgS(Self) // ,' Brush=',DbgS(Brush)); - OldHandle := SelectObject(FHandle, Brush.Reference.Handle); + OldHandle := SelectObject(FHandle, HGDIOBJ(Brush.Reference.Handle)); //debugln('TCanvas.CreateBrush ',ClassName,' Self=',DbgS(Self),' OldHandle=',DbgS(OldHandle),8),' NewHandle=',DbgS(Brush.Handle),' FSavedBrushHandle=',DbgS(Cardinal(FSavedBrushHandle)); if (OldHandle <> Brush.Reference.Handle) and (FSavedBrushHandle=0) then FSavedBrushHandle := OldHandle; @@ -175,7 +175,7 @@ const begin //DebugLn('[TCanvas.CreatePen] ',Classname,' Self=',DbgS(Self) // ,' Pen=',DbgS(Pen)); - OldHandle := SelectObject(FHandle, Pen.Reference.Handle); + OldHandle := SelectObject(FHandle, HGDIOBJ(Pen.Reference.Handle)); if (OldHandle <> Pen.Reference.Handle) and (FSavedPenHandle=0) then FSavedPenHandle := OldHandle; MoveTo(PenPos.X, PenPos.Y); @@ -196,7 +196,7 @@ begin // The first time the font handle is selected, the default font handle // is returned. Save this font handle to restore it later in DeselectHandles. // The TFont will call DeleteObject itself, so we never need to call it. - OldHandle := SelectObject(FHandle, Font.Reference.Handle); + OldHandle := SelectObject(FHandle, HGDIOBJ(Font.Reference.Handle)); //DebugLn(['TCanvas.CreateFont OldHandle=',dbghex(OldHandle),' Font.Handle=',dbghex(Font.Handle)]); if (OldHandle <> Font.Reference.Handle) and (FSavedFontHandle=0) then FSavedFontHandle := OldHandle; @@ -211,7 +211,7 @@ procedure TCanvas.CreateRegion; var OldHandle: HRGN; begin - OldHandle := SelectObject(FHandle, Region.Reference.Handle); + OldHandle := SelectObject(FHandle, HGDIOBJ(Region.Reference.Handle)); if (OldHandle <> Region.Reference.Handle) and (FSavedRegionHandle=0) then FSavedRegionHandle := OldHandle; Include(FState, csRegionValid); diff --git a/lcl/include/font.inc b/lcl/include/font.inc index c514738a66..3dc9773315 100644 --- a/lcl/include/font.inc +++ b/lcl/include/font.inc @@ -38,7 +38,7 @@ end; procedure TFontHandleCache.RemoveItem(Item: TResourceCacheItem); begin - DeleteObject(Item.Handle); + DeleteObject(HGDIOBJ(Item.Handle)); inherited RemoveItem(Item); end; @@ -1104,7 +1104,7 @@ begin FontResourceCache.FindFont(FReference.Handle).DecreaseRefCount; FFontHandleCached := False; end else - DeleteObject(FReference.Handle); + DeleteObject(HGDIOBJ(FReference.Handle)); FReference._lclHandle := 0; end; diff --git a/lcl/include/pen.inc b/lcl/include/pen.inc index 853818656e..ddd1dd392e 100644 --- a/lcl/include/pen.inc +++ b/lcl/include/pen.inc @@ -21,9 +21,9 @@ procedure TPenHandleCache.RemoveItem(Item: TResourceCacheItem); begin - if Item=nil then + if Item = nil then RaiseGDBException('TPenHandleCache.RemoveItem'); - DeleteObject(Item.Handle); + DeleteObject(HGDIOBJ(Item.Handle)); inherited RemoveItem(Item); end; @@ -235,7 +235,7 @@ begin PenResourceCache.FindItem(FReference.Handle).DecreaseRefCount; FPenHandleCached := False; end else - DeleteObject(FReference.Handle); + DeleteObject(HGDIOBJ(FReference.Handle)); FReference._lclHandle := 0; end; diff --git a/lcl/include/region.inc b/lcl/include/region.inc index 342b2941a1..1b5b5f3fdf 100644 --- a/lcl/include/region.inc +++ b/lcl/include/region.inc @@ -139,7 +139,7 @@ procedure TRegion.FreeReference; begin if not FRegionData.Reference.Allocated then Exit; - DeleteObject(FRegionData.Reference.Handle); + DeleteObject(HGDIOBJ(FRegionData.Reference.Handle)); FRegionData.Reference._lclHandle := 0; end;