Merged revision(s) 61200 #5f6aa28d51, 61202 #76b9420caf, 61205 #0f27442368, 61210 #e721ee16cc from trunk:

LCL: fix mem-leak in TCustomIcon.AssignImage / Temporary mask is not freed. Issue #0035562
........
LCL: fix mem-leak in TRasterImage.LoadFromRawImage Issue #0035372 / Behaviour change: if source and dest are equal, then data is kept as it is.

Previously new mem of the same size was allocated, but no data written to it. Previous behaviour appears to be buggy since it did NOT load anything, so new behaviour is fine.
(Only affects ADataOwner=False.)
........
LCL: TRasterImage.LoadFromRawImage / revision 61202 #76b9420caf (fixed memleak): Fix check for source = target // Also means the behaviour is/stays as before rev 61202 #76b9420caf
........
LCL: TRasterImage.LoadFromRawImage / revision 61202 #76b9420caf (fixed memleak): Fix check for source = target // Also means the behaviour is/stays as before rev 61202 #76b9420caf
........

git-svn-id: branches/fixes_2_0@61358 -
This commit is contained in:
martin 2019-06-11 16:15:08 +00:00
parent 9a272ef64b
commit d54eabffb6
2 changed files with 19 additions and 3 deletions

View File

@ -449,9 +449,9 @@ begin
NewImage.FImage.Mask := GetMem(NewImage.FImage.MaskSize);
Move(RawMsk.Mask^, NewImage.FImage.Mask^, NewImage.FImage.MaskSize);
// prevent cleanup
RawMsk.MaskSize := 0;
RawMsk.Mask := nil;
//// prevent cleanup
//RawMsk.MaskSize := 0;
//RawMsk.Mask := nil;
end;
RawMsk.FreeData;
end

View File

@ -586,6 +586,22 @@ begin
if AImage.Description.Format = ricfNone then Exit; // empty image
img := GetRawImagePtr;
// Make sure, we do not free AImage.Data or Mask
if img^.Data = AImage.Data then begin
img^.Data := nil;
img^.DataSize := 0;
end;
if img^.Mask = AImage.Mask then begin
img^.Mask := nil;
img^.MaskSize := 0;
end;
if img^.Palette = AImage.Palette then begin
img^.Palette := nil;
img^.PaletteSize := 0;
end;
img^.FreeData;
img^.Description := AImage.Description;
if ADataOwner
then begin