Sebastian Lackner : widl: When adding an interface typedef do check whether it has been already added while resolving the parent interface.
Module: wine Branch: master Commit: 736beff9c69923b8616767f9a825cd45ec77d584 URL: http://source.winehq.org/git/wine.git/?a=commit;h=736beff9c69923b8616767f9a8... Author: Sebastian Lackner <sebastian(a)fds-team.de> Date: Sat Oct 31 14:31:26 2015 +0800 widl: When adding an interface typedef do check whether it has been already added while resolving the parent interface. Signed-off-by: Sebastian Lackner <sebastian(a)fds-team.de> Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- tools/widl/write_msft.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/widl/write_msft.c b/tools/widl/write_msft.c index fc0eae7..98081f2 100644 --- a/tools/widl/write_msft.c +++ b/tools/widl/write_msft.c @@ -2078,6 +2078,10 @@ static void add_interface_typeinfo(msft_typelib_t *typelib, type_t *interface) add_interface_typeinfo(typelib, inherit); } + /* check typelib_idx again, it could have been added while resolving the parent interface */ + if (-1 < interface->typelib_idx) + return; + interface->typelib_idx = typelib->typelib_header.nrtypeinfos; msft_typeinfo = create_msft_typeinfo(typelib, TKIND_INTERFACE, interface->name, interface->attrs); msft_typeinfo->typeinfo->size = pointer_size;
participants (1)
-
Alexandre Julliard