mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 16:09:26 +02:00
* generate always direct fpc_decr_* calls for strings instead of fpc_finalize
git-svn-id: trunk@1967 -
This commit is contained in:
parent
7a4c89e68d
commit
53d7eafa7d
@ -469,14 +469,30 @@ implementation
|
||||
begin
|
||||
if not assigned(p.resulttype.def) then
|
||||
resulttypepass(p);
|
||||
result:=ccallnode.createintern('fpc_finalize',
|
||||
ccallparanode.create(
|
||||
caddrnode.create_internal(
|
||||
crttinode.create(
|
||||
tstoreddef(p.resulttype.def),initrtti)),
|
||||
ccallparanode.create(
|
||||
caddrnode.create_internal(p),
|
||||
nil)));
|
||||
if is_ansistring(p.resulttype.def) then
|
||||
begin
|
||||
result:=ccallnode.createintern('fpc_ansistr_decr_ref',
|
||||
ccallparanode.create(
|
||||
ctypeconvnode.create_internal(p,voidpointertype),
|
||||
nil));
|
||||
end
|
||||
else
|
||||
if is_widestring(p.resulttype.def) then
|
||||
begin
|
||||
result:=ccallnode.createintern('fpc_widestr_decr_ref',
|
||||
ccallparanode.create(
|
||||
ctypeconvnode.create_internal(p,voidpointertype),
|
||||
nil));
|
||||
end
|
||||
else
|
||||
result:=ccallnode.createintern('fpc_finalize',
|
||||
ccallparanode.create(
|
||||
caddrnode.create_internal(
|
||||
crttinode.create(
|
||||
tstoreddef(p.resulttype.def),initrtti)),
|
||||
ccallparanode.create(
|
||||
caddrnode.create_internal(p),
|
||||
nil)));
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user