Browse Source

* Fix for typelib importer by Ludo Mantis #22109

git-svn-id: trunk@22612 -
marco 13 years ago
parent
commit
0562192fb9
1 changed files with 6 additions and 2 deletions
  1. 6 2
      packages/winunits-base/src/typelib.pas

+ 6 - 2
packages/winunits-base/src/typelib.pas

@@ -568,7 +568,8 @@ begin
         if not MakeValidId(BstrName,sMethodName) then
           AddToHeader('//  Warning: renamed method ''%s'' in %s to ''%s''',[BstrName,iname,sMethodName],True);
         bIsFunction:=(bIsDispatch and (FD^.elemdescFunc.tdesc.vt<>VT_VOID)) or
-          (not bIsDispatch and (FD^.cParams>0) and ((FD^.lprgelemdescParam[FD^.cParams-1].paramdesc.wParamFlags and PARAMFLAG_FRETVAL ) <>0));
+          (not bIsDispatch and (FD^.cParams>0) and ((FD^.lprgelemdescParam[FD^.cParams-1].paramdesc.wParamFlags and PARAMFLAG_FRETVAL ) <>0)) or
+          (sConv<>'safecall');
         if bIsFunction then
           sFunc:=format('    // %s : %s '#13#10'   function %s(',[sMethodName,BstrDocString,sMethodName])
         else
@@ -682,7 +683,10 @@ begin
           sEventImplementations:=sEventImplementations+';'#13#10;
           end;
         if bIsFunction then
-          sFunc:=sFunc+format(':%s',[sType]);
+          if (sConv<>'safecall') then
+            sFunc:=sFunc+':HRESULT'
+          else
+            sFunc:=sFunc+format(':%s',[sType]);
         if bIsDispatch then
           s:=s+sFunc+format(';dispid %d;'#13#10,[FD^.memid])
         else