Steema Issues Database

Note: This database is for bugs and wishes only. For technical support help, if you are a customer please visit our online forums;
otherwise you can use StackOverflow.
Before using this bug-tracker we recommend a look at this document, Steema Bug Fixing Policy.



Bug 518 - Pie Series rotate leads to Invalid Pointer Operation when "Other" slice is activated
Summary: Pie Series rotate leads to Invalid Pointer Operation when "Other" slice is ac...
Status: RESOLVED FIXED
Alias: None
Product: VCL TeeChart
Classification: Unclassified
Component: Series (show other bugs)
Version: 131119
Hardware: PC Windows
: High critical
Target Milestone: ---
Assignee: Steema Issue Manager
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-12-17 06:52 EST by roth
Modified: 2013-12-17 08:10 EST (History)
1 user (show)

See Also:
Chart Series: Pie
Delphi / C++ Builder RAD IDE Version: RAD XE5


Attachments
Sample project to provoke Invalid Pointer Operation (56.90 KB, application/x-zip-compressed)
2013-12-17 06:52 EST, roth
Details

Note You need to log in before you can comment on or make changes to this bug.
Description roth 2013-12-17 06:52:50 EST
Created attachment 57 [details]
Sample project to provoke Invalid Pointer Operation

I See Invalid Pointer Operations when rotating my 3D pie Chart with activated "Other" slice.

Delphi XE5, TeeChart Pro V2013 (2013.09.131119) 

Repro:
1. Open the attached sample Project in Delphi XE5 with installed TeeChart Pro V2013
2. Build and run the Project
3. Click inside the shown pie Chart and use the mouse wheel 
-> Invalid Pointer Operation
Comment 1 david berneda 2013-12-17 08:10:23 EST
Fixed. 
The problem was TChartSeries.Delete method was double-destroying a Marks.Positions and Marks.Items instance (XE4 and up only).

Correct code is:

....
      if FPositions.Count>ValueIndex then
      begin
        {$IFNDEF D18}
        FPositions[ValueIndex].Free;
        {$ENDIF}

        FPositions.Delete(ValueIndex);
      end;

      if FItems.Count>ValueIndex then
      begin
        {$IFNDEF D18}
        FItems[ValueIndex].Free;
        {$ENDIF}

        FItems.Delete(ValueIndex);
      end;
....