mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-04 10:38:26 +02:00
* fixed exit with ansistring return from function call, no_fast_exit
should be set in det_resulttype instead of pass_1
This commit is contained in:
parent
1bfc8ffbce
commit
2b8091365e
@ -1278,6 +1278,22 @@ implementation
|
||||
{ ensure that the result type is set }
|
||||
resulttype:=procdefinition.rettype;
|
||||
|
||||
{ get a register for the return value }
|
||||
if (not is_void(resulttype.def)) then
|
||||
begin
|
||||
if ret_in_acc(resulttype.def) then
|
||||
begin
|
||||
{ wide- and ansistrings are returned in EAX }
|
||||
{ but they are imm. moved to a memory location }
|
||||
if is_widestring(resulttype.def) or
|
||||
is_ansistring(resulttype.def) then
|
||||
begin
|
||||
{ we use ansistrings so no fast exit here }
|
||||
procinfo^.no_fast_exit:=true;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ constructors return their current class type, not the type where the
|
||||
constructor is declared, this can be different because of inheritance }
|
||||
if (procdefinition.proctypeoption=potype_constructor) then
|
||||
@ -1428,13 +1444,9 @@ implementation
|
||||
{ wide- and ansistrings are returned in EAX }
|
||||
{ but they are imm. moved to a memory location }
|
||||
if is_widestring(resulttype.def) or
|
||||
is_ansistring(resulttype.def) then
|
||||
is_ansistring(resulttype.def) then
|
||||
begin
|
||||
location.loc:=LOC_MEM;
|
||||
{ this is wrong we still need one register PM
|
||||
registers32:=0; }
|
||||
{ we use ansistrings so no fast exit here }
|
||||
procinfo^.no_fast_exit:=true;
|
||||
registers32:=1;
|
||||
end;
|
||||
end
|
||||
@ -1610,7 +1622,11 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.32 2001-04-26 21:55:05 peter
|
||||
Revision 1.33 2001-05-20 12:09:31 peter
|
||||
* fixed exit with ansistring return from function call, no_fast_exit
|
||||
should be set in det_resulttype instead of pass_1
|
||||
|
||||
Revision 1.32 2001/04/26 21:55:05 peter
|
||||
* defcoll must be assigned in insert_typeconv
|
||||
|
||||
Revision 1.31 2001/04/21 12:03:11 peter
|
||||
|
Loading…
Reference in New Issue
Block a user