mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 00:46:02 +02:00
* added copyvaluepara call again
This commit is contained in:
parent
e2fd02814d
commit
ac3c08daca
@ -2309,8 +2309,7 @@ implementation
|
|||||||
|
|
||||||
{ initialize return value }
|
{ initialize return value }
|
||||||
if (procinfo^.returntype.def<>pdef(voiddef)) and
|
if (procinfo^.returntype.def<>pdef(voiddef)) and
|
||||||
(procinfo^.returntype.def^.needs_inittable) and
|
(procinfo^.returntype.def^.needs_inittable) then
|
||||||
not(is_class(procinfo^.returntype.def)) then
|
|
||||||
begin
|
begin
|
||||||
procinfo^.flags:=procinfo^.flags or pi_needs_implicit_finally;
|
procinfo^.flags:=procinfo^.flags or pi_needs_implicit_finally;
|
||||||
reset_reference(r);
|
reset_reference(r);
|
||||||
@ -2333,18 +2332,15 @@ implementation
|
|||||||
else
|
else
|
||||||
aktprocsym^.definition^.localst^.foreach({$ifndef TP}@{$endif}initialize_data);
|
aktprocsym^.definition^.localst^.foreach({$ifndef TP}@{$endif}initialize_data);
|
||||||
end;
|
end;
|
||||||
{
|
|
||||||
|
{ initialisizes temp. ansi/wide string data }
|
||||||
|
inittempvariables;
|
||||||
|
|
||||||
{ generate copies of call by value parameters }
|
{ generate copies of call by value parameters }
|
||||||
if not(po_assembler in aktprocsym^.definition^.procoptions) and
|
if not(po_assembler in aktprocsym^.definition^.procoptions) and
|
||||||
(([pocall_cdecl,pocall_cppdecl]*aktprocsym^.definition^.proccalloptions)=[]) then
|
(([pocall_cdecl,pocall_cppdecl]*aktprocsym^.definition^.proccalloptions)=[]) then
|
||||||
aktprocsym^.definition^.parast^.foreach({$ifndef TP}@{$endif}copyvalueparas);
|
aktprocsym^.definition^.parast^.foreach({$ifndef TP}@{$endif}copyvalueparas);
|
||||||
|
|
||||||
{ add a reference to all call by value/const parameters }
|
|
||||||
aktprocsym^.definition^.parast^.foreach({$ifndef TP}@{$endif}incr_data);
|
|
||||||
}
|
|
||||||
{ initialisizes temp. ansi/wide string data }
|
|
||||||
inittempvariables;
|
|
||||||
|
|
||||||
{ do we need an exception frame because of ansi/widestrings/interfaces ? }
|
{ do we need an exception frame because of ansi/widestrings/interfaces ? }
|
||||||
if not inlined and
|
if not inlined and
|
||||||
((procinfo^.flags and pi_needs_implicit_finally)<>0) and
|
((procinfo^.flags and pi_needs_implicit_finally)<>0) and
|
||||||
@ -2932,7 +2928,10 @@ implementation
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.7 2000-11-04 14:25:23 florian
|
Revision 1.8 2000-11-06 23:15:01 peter
|
||||||
|
* added copyvaluepara call again
|
||||||
|
|
||||||
|
Revision 1.7 2000/11/04 14:25:23 florian
|
||||||
+ merged Attila's changes for interfaces, not tested yet
|
+ merged Attila's changes for interfaces, not tested yet
|
||||||
|
|
||||||
Revision 1.6 2000/10/31 22:02:55 peter
|
Revision 1.6 2000/10/31 22:02:55 peter
|
||||||
|
@ -1318,8 +1318,7 @@ implementation
|
|||||||
if location.loc in [LOC_MEM,LOC_REFERENCE] then
|
if location.loc in [LOC_MEM,LOC_REFERENCE] then
|
||||||
begin
|
begin
|
||||||
{ data which must be finalized ? }
|
{ data which must be finalized ? }
|
||||||
if (resulttype^.needs_inittable) and
|
if (resulttype^.needs_inittable) then
|
||||||
not(is_class(resulttype)) then
|
|
||||||
finalize(resulttype,location.reference,false);
|
finalize(resulttype,location.reference,false);
|
||||||
{ release unused temp }
|
{ release unused temp }
|
||||||
ungetiftemp(location.reference)
|
ungetiftemp(location.reference)
|
||||||
@ -1557,7 +1556,10 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.4 2000-11-04 14:25:23 florian
|
Revision 1.5 2000-11-06 23:15:01 peter
|
||||||
|
* added copyvaluepara call again
|
||||||
|
|
||||||
|
Revision 1.4 2000/11/04 14:25:23 florian
|
||||||
+ merged Attila's changes for interfaces, not tested yet
|
+ merged Attila's changes for interfaces, not tested yet
|
||||||
|
|
||||||
Revision 1.3 2000/11/04 13:12:14 jonas
|
Revision 1.3 2000/11/04 13:12:14 jonas
|
||||||
|
@ -625,8 +625,7 @@ implementation
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
if (right.resulttype^.needs_inittable) and
|
if (right.resulttype^.needs_inittable) then
|
||||||
not(is_class(right.resulttype)) then
|
|
||||||
begin
|
begin
|
||||||
{ this would be a problem }
|
{ this would be a problem }
|
||||||
if not(left.resulttype^.needs_inittable) then
|
if not(left.resulttype^.needs_inittable) then
|
||||||
@ -1065,7 +1064,10 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.3 2000-11-04 14:25:23 florian
|
Revision 1.4 2000-11-06 23:15:02 peter
|
||||||
|
* added copyvaluepara call again
|
||||||
|
|
||||||
|
Revision 1.3 2000/11/04 14:25:23 florian
|
||||||
+ merged Attila's changes for interfaces, not tested yet
|
+ merged Attila's changes for interfaces, not tested yet
|
||||||
|
|
||||||
Revision 1.2 2000/10/31 22:02:56 peter
|
Revision 1.2 2000/10/31 22:02:56 peter
|
||||||
|
Loading…
Reference in New Issue
Block a user