* generate always direct fpc_decr_* calls for strings instead of fpc_finalize

git-svn-id: trunk@1967 -
This commit is contained in:
florian 2005-12-15 22:38:11 +00:00
parent 7a4c89e68d
commit 53d7eafa7d

View File

@ -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;