From 86af12370dba05c1f40a4ed818b3942153e929ed Mon Sep 17 00:00:00 2001 From: ask Date: Wed, 25 Nov 2009 08:32:15 +0000 Subject: [PATCH] TAChart: Fix AV after TChart.ClearSeries call (issue #15173) git-svn-id: trunk@22757 - --- components/tachart/tagraph.pas | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/components/tachart/tagraph.pas b/components/tachart/tagraph.pas index 18360bb02f..98b97da899 100644 --- a/components/tachart/tagraph.pas +++ b/components/tachart/tagraph.pas @@ -99,10 +99,11 @@ type FList: TFPList; function GetItem(AIndex: Integer): TBasicChartSeries; public - function Count: Integer; constructor Create; destructor Destroy; override; - + public + procedure Clear; + function Count: Integer; public property Items[AIndex: Integer]: TBasicChartSeries read GetItem; default; end; @@ -531,7 +532,7 @@ end; procedure TChart.ClearSeries; begin - FSeries.FList.Clear; + FSeries.Clear; Invalidate; end; @@ -691,6 +692,7 @@ begin i := FSeries.FList.IndexOf(ASeries); if i < 0 then exit; FSeries.FList.Delete(i); + ASeries.FChart := nil; Invalidate; end; @@ -1159,6 +1161,17 @@ end; { TChartSeriesList } +procedure TChartSeriesList.Clear; +var + i: Integer; +begin + for i := 0 to FList.Count - 1 do begin + Items[i].FChart := nil; + Items[i].Free; + end; + FList.Clear; +end; + function TChartSeriesList.Count: Integer; begin Result := FList.Count; @@ -1170,13 +1183,8 @@ begin end; destructor TChartSeriesList.Destroy; -var - i: Integer; begin - for i := 0 to FList.Count - 1 do begin - Items[i].FChart := nil; - Items[i].Free; - end; + Clear; FList.Free; inherited Destroy; end;