mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-14 10:20:21 +02:00
* fixed memory leaks
This commit is contained in:
parent
aad3a801bd
commit
4b17f6f0ff
@ -118,7 +118,11 @@ uses
|
||||
{$else Delphi}
|
||||
dos,
|
||||
{$endif Delphi}
|
||||
cobjects,globals;
|
||||
cobjects,globals
|
||||
{$ifdef heaptrc}
|
||||
,fmodule
|
||||
{$endif heaptrc}
|
||||
;
|
||||
|
||||
{****************************************************************************
|
||||
TINPUTFILE
|
||||
@ -564,7 +568,10 @@ uses
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.2 2000-09-24 15:06:16 peter
|
||||
Revision 1.3 2000-10-14 21:52:54 peter
|
||||
* fixed memory leaks
|
||||
|
||||
Revision 1.2 2000/09/24 15:06:16 peter
|
||||
* use defines.inc
|
||||
|
||||
Revision 1.1 2000/08/27 16:11:50 peter
|
||||
|
@ -702,6 +702,7 @@ implementation
|
||||
secondpass(hightree);
|
||||
emit_mov_loc_ref(hightree.location,href,S_L,true);
|
||||
hightree.free;
|
||||
hightree:=nil;
|
||||
end;
|
||||
emitrangecheck(right,left.resulttype);
|
||||
end;
|
||||
@ -1016,7 +1017,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.1 2000-10-14 10:14:49 peter
|
||||
Revision 1.2 2000-10-14 21:52:54 peter
|
||||
* fixed memory leaks
|
||||
|
||||
Revision 1.1 2000/10/14 10:14:49 peter
|
||||
* moehrendorf oct 2000 rewrite
|
||||
|
||||
}
|
@ -55,8 +55,9 @@ implementation
|
||||
globtype,globals,systems,verbose,
|
||||
cutils,cobjects,
|
||||
aasm,cpubase,cpuasm,
|
||||
symconst,
|
||||
{$ifdef GDB}
|
||||
gdb,symconst,
|
||||
gdb,
|
||||
{$endif GDB}
|
||||
types,
|
||||
ncon,nld,
|
||||
@ -1148,6 +1149,7 @@ implementation
|
||||
secondpass(hightree);
|
||||
push_value_para(hightree,false,false,0,4);
|
||||
hightree.free;
|
||||
hightree:=nil;
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -1313,7 +1315,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.2 2000-10-14 10:14:50 peter
|
||||
Revision 1.3 2000-10-14 21:52:54 peter
|
||||
* fixed memory leaks
|
||||
|
||||
Revision 1.2 2000/10/14 10:14:50 peter
|
||||
* moehrendorf oct 2000 rewrite
|
||||
|
||||
Revision 1.1 2000/10/01 19:58:40 peter
|
||||
|
@ -44,6 +44,7 @@ interface
|
||||
tasmnode = class(tnode)
|
||||
p_asm : paasmoutput;
|
||||
constructor create(p : paasmoutput);virtual;
|
||||
destructor destroy;override;
|
||||
function pass_1 : tnode;override;
|
||||
end;
|
||||
|
||||
@ -311,6 +312,12 @@ implementation
|
||||
p_asm:=p;
|
||||
end;
|
||||
|
||||
destructor tasmnode.destroy;
|
||||
begin
|
||||
if assigned(p_asm) then
|
||||
dispose(p_asm,done);
|
||||
inherited destroy;
|
||||
end;
|
||||
|
||||
function tasmnode.pass_1 : tnode;
|
||||
begin
|
||||
@ -327,7 +334,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.1 2000-10-14 10:14:50 peter
|
||||
Revision 1.2 2000-10-14 21:52:54 peter
|
||||
* fixed memory leaks
|
||||
|
||||
Revision 1.1 2000/10/14 10:14:50 peter
|
||||
* moehrendorf oct 2000 rewrite
|
||||
|
||||
}
|
@ -76,6 +76,7 @@ interface
|
||||
inlineprocsym : pprocsym;
|
||||
retoffset,para_offset,para_size : longint;
|
||||
constructor create(callp,code : tnode);virtual;
|
||||
destructor destroy;override;
|
||||
function getcopy : tnode;override;
|
||||
function pass_1 : tnode;override;
|
||||
end;
|
||||
@ -1239,6 +1240,7 @@ interface
|
||||
tcallparanode(left).left);
|
||||
tcallparanode(left).left:=nil;
|
||||
left.free;
|
||||
left:=nil;
|
||||
end;
|
||||
end
|
||||
else
|
||||
@ -1487,6 +1489,12 @@ interface
|
||||
{$ENDIF NEWST}
|
||||
end;
|
||||
|
||||
destructor tprocinlinenode.destroy;
|
||||
begin
|
||||
inlinetree.free;
|
||||
inherited destroy;
|
||||
end;
|
||||
|
||||
function tprocinlinenode.getcopy : tnode;
|
||||
|
||||
var
|
||||
@ -1521,7 +1529,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.9 2000-10-14 10:14:50 peter
|
||||
Revision 1.10 2000-10-14 21:52:55 peter
|
||||
* fixed memory leaks
|
||||
|
||||
Revision 1.9 2000/10/14 10:14:50 peter
|
||||
* moehrendorf oct 2000 rewrite
|
||||
|
||||
Revision 1.8 2000/10/01 19:48:24 peter
|
||||
@ -1548,4 +1559,4 @@ end.
|
||||
Revision 1.1 2000/09/20 20:52:16 florian
|
||||
* initial revision
|
||||
|
||||
}
|
||||
}
|
@ -183,12 +183,15 @@ implementation
|
||||
{split a range into p2 and p3 }
|
||||
if p.left.nodetype=arrayconstructorrangen then
|
||||
begin
|
||||
p2:=tarrayconstructorrangenode(p.left).left.getcopy;
|
||||
p3:=tarrayconstructorrangenode(p.left).right.getcopy;
|
||||
p2:=tarrayconstructorrangenode(p.left).left;
|
||||
p3:=tarrayconstructorrangenode(p.left).right;
|
||||
tarrayconstructorrangenode(p.left).left:=nil;
|
||||
tarrayconstructorrangenode(p.left).right:=nil;
|
||||
end
|
||||
else
|
||||
begin
|
||||
p2:=p.left.getcopy;
|
||||
p2:=p.left;
|
||||
p.left:=nil;
|
||||
p3:=nil;
|
||||
end;
|
||||
firstpass(p2);
|
||||
@ -843,8 +846,8 @@ implementation
|
||||
else
|
||||
hp:=genloadcallnode(pprocsym(tcallnode(left).symtableprocentry),
|
||||
tcallnode(left).symtableproc);
|
||||
left.free;
|
||||
firstpass(hp);
|
||||
left.free;
|
||||
left:=hp;
|
||||
aprocdef:=pprocdef(left.resulttype);
|
||||
(* end
|
||||
@ -1160,7 +1163,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.7 2000-10-14 10:14:50 peter
|
||||
Revision 1.8 2000-10-14 21:52:55 peter
|
||||
* fixed memory leaks
|
||||
|
||||
Revision 1.7 2000/10/14 10:14:50 peter
|
||||
* moehrendorf oct 2000 rewrite
|
||||
|
||||
Revision 1.6 2000/10/01 19:48:24 peter
|
||||
@ -1180,4 +1186,4 @@ end.
|
||||
|
||||
Revision 1.1 2000/09/25 15:37:14 florian
|
||||
* more fixes
|
||||
}
|
||||
}
|
@ -66,6 +66,7 @@ interface
|
||||
stringtype : tstringtype;
|
||||
constructor createstr(const s : string;st:tstringtype);virtual;
|
||||
constructor createpchar(s : pchar;l : longint);virtual;
|
||||
destructor destroy;override;
|
||||
function getcopy : tnode;override;
|
||||
function pass_1 : tnode;override;
|
||||
function getpcharcopy : pchar;
|
||||
@ -75,6 +76,7 @@ interface
|
||||
value_set : pconstset;
|
||||
lab_set : pasmlabel;
|
||||
constructor create(s : pconstset;settype : psetdef);virtual;
|
||||
destructor destroy;override;
|
||||
function getcopy : tnode;override;
|
||||
function pass_1 : tnode;override;
|
||||
end;
|
||||
@ -124,7 +126,7 @@ interface
|
||||
implementation
|
||||
|
||||
uses
|
||||
cobjects,verbose,globals,systems,
|
||||
cutils,cobjects,verbose,globals,systems,
|
||||
types,hcodegen,pass_1,cpubase,nld;
|
||||
|
||||
function genordinalconstnode(v : tconstexprint;def : pdef) : tordconstnode;
|
||||
@ -500,6 +502,12 @@ implementation
|
||||
lab_str:=nil;
|
||||
end;
|
||||
|
||||
destructor tstringconstnode.destroy;
|
||||
begin
|
||||
ansistringdispose(value_str,len);
|
||||
inherited destroy;
|
||||
end;
|
||||
|
||||
function tstringconstnode.getcopy : tnode;
|
||||
|
||||
var
|
||||
@ -561,6 +569,13 @@ implementation
|
||||
value_set:=nil;
|
||||
end;
|
||||
|
||||
destructor tsetconstnode.destroy;
|
||||
begin
|
||||
if assigned(value_set) then
|
||||
dispose(value_set);
|
||||
inherited destroy;
|
||||
end;
|
||||
|
||||
function tsetconstnode.getcopy : tnode;
|
||||
|
||||
var
|
||||
@ -613,7 +628,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.8 2000-10-14 10:14:50 peter
|
||||
Revision 1.9 2000-10-14 21:52:55 peter
|
||||
* fixed memory leaks
|
||||
|
||||
Revision 1.8 2000/10/14 10:14:50 peter
|
||||
* moehrendorf oct 2000 rewrite
|
||||
|
||||
Revision 1.7 2000/09/28 19:49:52 florian
|
||||
|
@ -108,6 +108,7 @@ interface
|
||||
exceptsymtable : psymtable;
|
||||
excepttype : pobjectdef;
|
||||
constructor create(l,r:tnode);virtual;
|
||||
destructor destroy;override;
|
||||
function pass_1 : tnode;override;
|
||||
function getcopy : tnode;override;
|
||||
end;
|
||||
@ -193,10 +194,8 @@ implementation
|
||||
destructor tloopnode.destroy;
|
||||
|
||||
begin
|
||||
if assigned(t1) then
|
||||
t1.free;
|
||||
if assigned(t2) then
|
||||
t2.free;
|
||||
t1.free;
|
||||
t2.free;
|
||||
inherited destroy;
|
||||
end;
|
||||
|
||||
@ -881,6 +880,13 @@ implementation
|
||||
excepttype:=nil;
|
||||
end;
|
||||
|
||||
destructor tonnode.destroy;
|
||||
begin
|
||||
if assigned(exceptsymtable) then
|
||||
dispose(exceptsymtable,done);
|
||||
inherited destroy;
|
||||
end;
|
||||
|
||||
function tonnode.getcopy : tnode;
|
||||
|
||||
var
|
||||
@ -976,7 +982,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.6 2000-10-14 10:14:50 peter
|
||||
Revision 1.7 2000-10-14 21:52:55 peter
|
||||
* fixed memory leaks
|
||||
|
||||
Revision 1.6 2000/10/14 10:14:50 peter
|
||||
* moehrendorf oct 2000 rewrite
|
||||
|
||||
Revision 1.5 2000/10/01 19:48:24 peter
|
||||
|
@ -91,13 +91,13 @@ interface
|
||||
{$IFDEF NEWST}
|
||||
withsymtables : Pcollection;
|
||||
withreference : preference;
|
||||
|
||||
{$ELSE}
|
||||
withsymtable : pwithsymtable;
|
||||
tablecount : longint;
|
||||
withreference:preference;
|
||||
{$ENDIF NEWST}
|
||||
constructor create(symtable : pwithsymtable;l,r : tnode;count : longint);virtual;
|
||||
destructor destroy;override;
|
||||
function getcopy : tnode;override;
|
||||
function pass_1 : tnode;override;
|
||||
end;
|
||||
@ -423,7 +423,7 @@ implementation
|
||||
|
||||
{ it could also be a procvar, not only pprocsym ! }
|
||||
if tcallnode(left).symtableprocentry^.typ=varsym then
|
||||
hp3:=pabstractprocdef(pvarsym(tloadnode(left).symtableentry)^.vartype.def)
|
||||
hp3:=pabstractprocdef(pvarsym(tcallnode(left).symtableprocentry)^.vartype.def)
|
||||
else
|
||||
hp3:=pabstractprocdef(pprocsym(tcallnode(left).symtableprocentry)^.definition);
|
||||
|
||||
@ -829,6 +829,28 @@ implementation
|
||||
set_file_line(l);
|
||||
end;
|
||||
|
||||
destructor twithnode.destroy;
|
||||
var
|
||||
symt : psymtable;
|
||||
i : longint;
|
||||
begin
|
||||
{$IFDEF NEWST}
|
||||
dispose(withsymtables,done);
|
||||
{$ELSE}
|
||||
symt:=withsymtable;
|
||||
for i:=1 to tablecount do
|
||||
begin
|
||||
if assigned(symt) then
|
||||
begin
|
||||
withsymtable:=pwithsymtable(symt^.next);
|
||||
dispose(symt,done);
|
||||
end;
|
||||
symt:=withsymtable;
|
||||
end;
|
||||
{$ENDIF NEWST}
|
||||
inherited destroy;
|
||||
end;
|
||||
|
||||
function twithnode.getcopy : tnode;
|
||||
|
||||
var
|
||||
@ -882,7 +904,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.6 2000-10-14 10:14:51 peter
|
||||
Revision 1.7 2000-10-14 21:52:55 peter
|
||||
* fixed memory leaks
|
||||
|
||||
Revision 1.6 2000/10/14 10:14:51 peter
|
||||
* moehrendorf oct 2000 rewrite
|
||||
|
||||
Revision 1.5 2000/10/01 19:48:24 peter
|
||||
|
@ -62,9 +62,10 @@
|
||||
|
||||
begin
|
||||
{ reference info }
|
||||
if (location.loc in [LOC_MEM,LOC_REFERENCE]) and
|
||||
{if (location.loc in [LOC_MEM,LOC_REFERENCE]) and
|
||||
assigned(location.reference.symbol) then
|
||||
dispose(location.reference.symbol,done);
|
||||
dispose(location.reference.symbol,done);}
|
||||
|
||||
{$ifdef EXTDEBUG}
|
||||
if firstpasscount>maxfirstpasscount then
|
||||
maxfirstpasscount:=firstpasscount;
|
||||
@ -264,6 +265,12 @@
|
||||
left:=l;
|
||||
end;
|
||||
|
||||
destructor tunarynode.destroy;
|
||||
begin
|
||||
left.free;
|
||||
inherited destroy;
|
||||
end;
|
||||
|
||||
function tunarynode.docompare(p : tnode) : boolean;
|
||||
|
||||
begin
|
||||
@ -345,6 +352,12 @@
|
||||
right:=r
|
||||
end;
|
||||
|
||||
destructor tbinarynode.destroy;
|
||||
begin
|
||||
right.free;
|
||||
inherited destroy;
|
||||
end;
|
||||
|
||||
procedure tbinarynode.concattolist(l : plinkedlist);
|
||||
|
||||
begin
|
||||
@ -489,7 +502,10 @@
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.9 2000-10-14 10:14:51 peter
|
||||
Revision 1.10 2000-10-14 21:52:55 peter
|
||||
* fixed memory leaks
|
||||
|
||||
Revision 1.9 2000/10/14 10:14:51 peter
|
||||
* moehrendorf oct 2000 rewrite
|
||||
|
||||
Revision 1.8 2000/10/01 19:48:24 peter
|
||||
|
@ -258,6 +258,7 @@
|
||||
tunarynode = class(tparentnode)
|
||||
left : tnode;
|
||||
constructor create(tt : tnodetype;l : tnode);
|
||||
destructor destroy;override;
|
||||
procedure concattolist(l : plinkedlist);override;
|
||||
function ischild(p : tnode) : boolean;override;
|
||||
procedure det_resulttype;override;
|
||||
@ -274,6 +275,7 @@
|
||||
tbinarynode = class(tunarynode)
|
||||
right : tnode;
|
||||
constructor create(tt : tnodetype;l,r : tnode);
|
||||
destructor destroy;override;
|
||||
procedure concattolist(l : plinkedlist);override;
|
||||
function ischild(p : tnode) : boolean;override;
|
||||
procedure det_resulttype;override;
|
||||
@ -302,7 +304,10 @@
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.12 2000-10-14 10:14:51 peter
|
||||
Revision 1.13 2000-10-14 21:52:55 peter
|
||||
* fixed memory leaks
|
||||
|
||||
Revision 1.12 2000/10/14 10:14:51 peter
|
||||
* moehrendorf oct 2000 rewrite
|
||||
|
||||
Revision 1.11 2000/10/01 19:48:24 peter
|
||||
|
@ -323,6 +323,8 @@ interface
|
||||
begin
|
||||
if assigned(Data) then
|
||||
dispose(Data,done);
|
||||
if assigned(relocsect) then
|
||||
dispose(relocsect,done);
|
||||
end;
|
||||
|
||||
|
||||
@ -473,7 +475,11 @@ interface
|
||||
sec : tsection;
|
||||
begin
|
||||
writetodisk;
|
||||
{ free memory }
|
||||
dispose(syms,done);
|
||||
dispose(symtabsect,done);
|
||||
dispose(strtabsect,done);
|
||||
dispose(shstrtabsect,done);
|
||||
for sec:=low(tsection) to high(tsection) do
|
||||
if assigned(sects[sec]) then
|
||||
dispose(sects[sec],done);
|
||||
@ -1050,7 +1056,10 @@ interface
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.7 2000-09-24 15:06:20 peter
|
||||
Revision 1.8 2000-10-14 21:52:55 peter
|
||||
* fixed memory leaks
|
||||
|
||||
Revision 1.7 2000/09/24 15:06:20 peter
|
||||
* use defines.inc
|
||||
|
||||
Revision 1.6 2000/08/27 16:11:51 peter
|
||||
|
@ -36,7 +36,7 @@ interface
|
||||
implementation
|
||||
|
||||
uses
|
||||
globtype,globals,files;
|
||||
globtype,globals,fmodule;
|
||||
|
||||
procedure ppextra_info(p : pointer);
|
||||
var pl : plongint;
|
||||
@ -70,7 +70,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.3 2000-09-24 15:06:24 peter
|
||||
Revision 1.4 2000-10-14 21:52:56 peter
|
||||
* fixed memory leaks
|
||||
|
||||
Revision 1.3 2000/09/24 15:06:24 peter
|
||||
* use defines.inc
|
||||
|
||||
Revision 1.2 2000/07/13 11:32:45 michael
|
||||
|
@ -874,7 +874,9 @@ implementation
|
||||
if (pd^.deftype<>pointerdef) then
|
||||
begin
|
||||
Message1(type_e_pointer_type_expected,pd^.typename);
|
||||
p.free;
|
||||
p:=factor(false);
|
||||
p.free;
|
||||
consume(_RKLAMMER);
|
||||
new_dispose_statement:=cerrornode.create;
|
||||
exit;
|
||||
@ -883,6 +885,7 @@ implementation
|
||||
if ppointerdef(pd)^.pointertype.def^.deftype<>objectdef then
|
||||
begin
|
||||
Message(parser_e_pointer_to_class_expected);
|
||||
p.free;
|
||||
new_dispose_statement:=factor(false);
|
||||
consume_all_until(_RKLAMMER);
|
||||
consume(_RKLAMMER);
|
||||
@ -912,6 +915,7 @@ implementation
|
||||
Message(parser_e_expr_have_to_be_constructor_call)
|
||||
else
|
||||
Message(parser_e_expr_have_to_be_destructor_call);
|
||||
p.free;
|
||||
new_dispose_statement:=cerrornode.create;
|
||||
end
|
||||
else
|
||||
@ -960,7 +964,7 @@ implementation
|
||||
begin
|
||||
if (tcallnode(p2).procdefinition^.proctypeoption<>potype_constructor) then
|
||||
Message(parser_e_expr_have_to_be_constructor_call);
|
||||
p2:=cassignmentnode.create(p.getcopy,cnewnode.create(p2));
|
||||
p2:=cassignmentnode.create(p,cnewnode.create(p2));
|
||||
tassignmentnode(p2).right.resulttype:=pd2;
|
||||
end
|
||||
else
|
||||
@ -1254,7 +1258,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.10 2000-10-14 10:14:52 peter
|
||||
Revision 1.11 2000-10-14 21:52:56 peter
|
||||
* fixed memory leaks
|
||||
|
||||
Revision 1.10 2000/10/14 10:14:52 peter
|
||||
* moehrendorf oct 2000 rewrite
|
||||
|
||||
Revision 1.9 2000/10/01 19:48:25 peter
|
||||
|
Loading…
Reference in New Issue
Block a user