Sebastian Lackner : widl: When adding an interface typedef do check whether it has been already added while resolving the parent interface.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Nov 2 09:47:14 CST 2015


Module: wine
Branch: master
Commit: 736beff9c69923b8616767f9a825cd45ec77d584
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=736beff9c69923b8616767f9a825cd45ec77d584

Author: Sebastian Lackner <sebastian at 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 at fds-team.de>
Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at 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;




More information about the wine-cvs mailing list