mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-11 09:06:14 +02:00
* fix memory leak in graph, resolves #8467
* small cleanups git-svn-id: trunk@6778 -
This commit is contained in:
parent
9b26e7d261
commit
1ca49ea1e4
@ -47,8 +47,6 @@ const
|
|||||||
StdBufferSize = 4096; { Buffer size for FloodFill }
|
StdBufferSize = 4096; { Buffer size for FloodFill }
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
|
|
||||||
tinttable = array[0..16383] of smallint;
|
tinttable = array[0..16383] of smallint;
|
||||||
pinttable = ^tinttable;
|
pinttable = ^tinttable;
|
||||||
|
|
||||||
@ -1864,31 +1862,23 @@ end;
|
|||||||
FillPattern:=FillpatternTable[UserFill];
|
FillPattern:=FillpatternTable[UserFill];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
procedure DrawPoly(numpoints : word;var polypoints);
|
procedure DrawPoly(numpoints : word;var polypoints);
|
||||||
|
type
|
||||||
type
|
ppointtype = ^pointtype;
|
||||||
ppointtype = ^pointtype;
|
pt = array[0..16000] of pointtype;
|
||||||
pt = array[0..16000] of pointtype;
|
var
|
||||||
|
i : longint;
|
||||||
var
|
|
||||||
i : longint;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
if numpoints < 2 then
|
if numpoints < 2 then
|
||||||
begin
|
begin
|
||||||
_GraphResult := grError;
|
_GraphResult := grError;
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
for i:=0 to numpoints-2 do
|
for i:=0 to numpoints-2 do
|
||||||
line(pt(polypoints)[i].x,
|
line(pt(polypoints)[i].x,
|
||||||
pt(polypoints)[i].y,
|
pt(polypoints)[i].y,
|
||||||
pt(polypoints)[i+1].x,
|
pt(polypoints)[i+1].x,
|
||||||
pt(polypoints)[i+1].y);
|
pt(polypoints)[i+1].y);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -1984,8 +1974,7 @@ end;
|
|||||||
DriverName:=InternalDriverName; { DOS Graphics driver }
|
DriverName:=InternalDriverName; { DOS Graphics driver }
|
||||||
|
|
||||||
if (Graphdriver=Detect)
|
if (Graphdriver=Detect)
|
||||||
or (GraphMode = detectMode)
|
or (GraphMode = detectMode) then
|
||||||
then
|
|
||||||
begin
|
begin
|
||||||
internDetectGraph(GraphDriver,GraphMode,true);
|
internDetectGraph(GraphDriver,GraphMode,true);
|
||||||
If _GraphResult = grNotDetected then Exit;
|
If _GraphResult = grNotDetected then Exit;
|
||||||
@ -2001,7 +1990,7 @@ end;
|
|||||||
{ Actually set the graph mode...}
|
{ Actually set the graph mode...}
|
||||||
if firstCallOfInitgraph then
|
if firstCallOfInitgraph then
|
||||||
begin
|
begin
|
||||||
SaveVideoState;
|
SaveVideoState;
|
||||||
firstCallOfInitgraph := false;
|
firstCallOfInitgraph := false;
|
||||||
end;
|
end;
|
||||||
SetGraphMode(GraphMode);
|
SetGraphMode(GraphMode);
|
||||||
@ -2026,7 +2015,7 @@ end;
|
|||||||
|
|
||||||
if firstCallOfInitgraph then
|
if firstCallOfInitgraph then
|
||||||
begin
|
begin
|
||||||
SaveVideoState;
|
SaveVideoState;
|
||||||
firstCallOfInitgraph := false;
|
firstCallOfInitgraph := false;
|
||||||
end;
|
end;
|
||||||
SetGraphMode(GraphMode);
|
SetGraphMode(GraphMode);
|
||||||
@ -2059,8 +2048,8 @@ end;
|
|||||||
{ release memory allocated for fonts }
|
{ release memory allocated for fonts }
|
||||||
for c := 1 to installedfonts do
|
for c := 1 to installedfonts do
|
||||||
with fonts[c] Do
|
with fonts[c] Do
|
||||||
If assigned(instr) Then
|
If assigned(instr) Then
|
||||||
System.Freemem(instr,instrlength);
|
System.Freemem(instr,instrlength);
|
||||||
{ release memory allocated for modelist }
|
{ release memory allocated for modelist }
|
||||||
list := ModeList;
|
list := ModeList;
|
||||||
while assigned(list) do
|
while assigned(list) do
|
||||||
|
@ -132,10 +132,7 @@ end;
|
|||||||
logln('Adding resolution '+strf(modenr)+' for drivernr '+strf(drivernr)+
|
logln('Adding resolution '+strf(modenr)+' for drivernr '+strf(drivernr)+
|
||||||
' ('+strf(mode.maxx)+'x'+strf(mode.maxy)+')');
|
' ('+strf(mode.maxx)+'x'+strf(mode.maxy)+')');
|
||||||
{$endif logging}
|
{$endif logging}
|
||||||
if assigned(list) then
|
newLst^.next := list;
|
||||||
newLst^.next := list^.next
|
|
||||||
else
|
|
||||||
newLst^.next := nil;
|
|
||||||
if assigned(prev) then
|
if assigned(prev) then
|
||||||
prev^.next := newLst
|
prev^.next := newLst
|
||||||
else
|
else
|
||||||
@ -170,7 +167,6 @@ end;
|
|||||||
list^.next := NewLst;
|
list^.next := NewLst;
|
||||||
System.move(mode, NewLst^, sizeof(Mode));
|
System.move(mode, NewLst^, sizeof(Mode));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user