|
@@ -179,15 +179,14 @@ implementation
|
|
|
{ true if uses a parameter as return value }
|
|
|
function tparamanager.ret_in_param(def:tdef;pd:tabstractprocdef):boolean;
|
|
|
begin
|
|
|
+ { This handles all managed types, including COM interfaces and Variants }
|
|
|
if handle_common_ret_in_param(def,pd,result) then
|
|
|
exit;
|
|
|
ret_in_param:=(def.typ=arraydef) or
|
|
|
(def.typ=recorddef) or
|
|
|
(def.typ=stringdef) or
|
|
|
((def.typ=procvardef) and not tprocvardef(def).is_addressonly) or
|
|
|
- { interfaces are also passed by reference to be compatible with delphi and COM }
|
|
|
- ((def.typ=objectdef) and (is_object(def) or is_interface(def) or is_dispinterface(def))) or
|
|
|
- (def.typ=variantdef) or
|
|
|
+ ((def.typ=objectdef) and (is_object(def))) or
|
|
|
((def.typ=setdef) and not is_smallset(def));
|
|
|
end;
|
|
|
|