You've already forked lazarus-ccr
LazBarcodes: Fix memory leak in Maxicode. Issue #39030, patch by Joeny Ang
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8363 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -86,10 +86,10 @@ end;
|
||||
|
||||
procedure ZBarcode_Delete(symbol: PointerTo_zint_symbol);
|
||||
var
|
||||
l: PointerTo_zint_render_line;
|
||||
line: PointerTo_zint_render_line;
|
||||
s: PointerTo_zint_render_string;
|
||||
TheString: PointerTo_zint_render_string;
|
||||
l, line: PointerTo_zint_render_line;
|
||||
s, lString: PointerTo_zint_render_string;
|
||||
h, hexagon: PointerTo_zint_render_hexagon;
|
||||
r, ring: PointerTo_zint_render_ring;
|
||||
begin
|
||||
if Boolean(symbol^.bitmap <> nil) then
|
||||
begin
|
||||
@ -102,19 +102,33 @@ begin
|
||||
begin
|
||||
l := line;
|
||||
line := line^.next;
|
||||
FreeMem (l);
|
||||
FreeMem(l);
|
||||
end;
|
||||
TheString := symbol^.rendered^.strings;
|
||||
while Assigned(TheString) do
|
||||
hexagon := symbol^.rendered^.hexagons;
|
||||
while Assigned(hexagon) do
|
||||
begin
|
||||
s := TheString;
|
||||
TheString := TheString^.next;
|
||||
FreeMem (s^.text);
|
||||
FreeMem (s);
|
||||
h := hexagon;
|
||||
hexagon := h^.next;
|
||||
FreeMem(h);
|
||||
end;
|
||||
FreeMem (symbol^.rendered);
|
||||
ring := symbol^.rendered^.rings;
|
||||
while Assigned(ring) do
|
||||
begin
|
||||
r := ring;
|
||||
ring := r^.Next;
|
||||
FreeMem(r);
|
||||
end;
|
||||
FreeMem (symbol);
|
||||
lString := symbol^.rendered^.strings;
|
||||
while Assigned(lString) do
|
||||
begin
|
||||
s := lString;
|
||||
lString := lString^.next;
|
||||
FreeMem(s^.text);
|
||||
FreeMem(s);
|
||||
end;
|
||||
FreeMem(symbol^.rendered);
|
||||
end;
|
||||
FreeMem(symbol);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
Reference in New Issue
Block a user