Hello FPC, In fpc 2.5.1 trunk today the QueryInterface in rtl\inc\objpash.inc is defined as:
IUnknown = interface ['{00000000-0000-0000-C000-000000000046}'] function QueryInterface({$IFDEF FPC_HAS_CONSTREF}constref{$ELSE}const{$ENDIF} iid : tguid;out obj) : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF}; function _AddRef : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF}; function _Release : longint;{$IFNDEF WINDOWS}cdecl{$ELSE}stdcall{$ENDIF}; end; IInterface = IUnknown; Which after the resolved ifdefs it is compiled in Windows as: IUnknown = interface ['{00000000-0000-0000-C000-000000000046}'] function QueryInterface(constref iid : tguid;out obj) : longint; stdcall; function _AddRef : longint; stdcall; function _Release : longint; stdcall; end; IInterface = IUnknown; Which breaks the compilation of source code like Zeos which expect the "iid: tguid" to be const, not constref. I'm aware about the changes done to be XPCOM compatible, but at the price of "breaking" all existing COM code ? OK, the break is quite easy to solve, just replace const by contref, but the question is... Is needed to change it to constref in Windows platform too ? I know Joost do the changes, but I think direct email is not a good choice unless no answer in list of course. -- Best regards, José _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel