Merged revision(s) 59851 #a984fbbfc5 from trunk:

Fix TCustomIcon.AssignImage / Add / UnshareImage.  New images must be created according to FSharedImage.GetImagesClass. 
Otherwise "ci := TCursorImage.Create; ci.Assign(Some_TBitMap);" will crash.
........

git-svn-id: branches/fixes_2_0@59857 -
This commit is contained in:
martin 2018-12-18 18:11:43 +00:00
parent 4e49a1463c
commit f9a6ef9cbc

View File

@ -357,7 +357,7 @@ begin
then raise EInvalidGraphicOperation.Create(rsDuplicateIconFormat);
UnshareImage(True);
if TSharedIcon(FSharedImage).FImages.Add(TIconImage.Create(AFormat, AHeight, AWidth)) = 0
if TSharedIcon(FSharedImage).FImages.Add(TSharedIcon(FSharedImage).GetImagesClass.Create(AFormat, AHeight, AWidth)) = 0
then begin
// First added
FCurrent := 0;
@ -424,7 +424,7 @@ begin
FreeCanvasContext;
RawImg := ASource.GetRawImagePtr;
NewImage := TIconImage.Create(Image.PixelFormat, Image.Height, Image.Width);
NewImage := TSharedIcon(FSharedImage).GetImagesClass.Create(Image.PixelFormat, Image.Height, Image.Width);
try
NewImage.FImage.Description := RawImg^.Description;
@ -1057,7 +1057,7 @@ begin
for n := 0 to OldIcon.FImages.Count -1 do
begin
OldImage := TIconImage(OldIcon.FImages[n]);
NewImage := TIconImage.Create(OldImage.PixelFormat, OldImage.Height, OldImage.Width);
NewImage := NewIcon.GetImagesClass.Create(OldImage.PixelFormat, OldImage.Height, OldImage.Width);
NewIcon.FImages.Add(NewImage);
NewImage.FImage.Description := OldImage.FImage.Description;
NewImage.FImage.DataSize := OldImage.FImage.DataSize;