widl: Only output code for non-object interfaces in client and server.
Only output code for non-object interfaces in client and server
generation and convert the while loops into for loops.
diff --git a/tools/widl/client.c b/tools/widl/client.c
index c2af6b9..528ffbf 100644
--- a/tools/widl/client.c
+++ b/tools/widl/client.c
@@ -491,8 +491,11 @@
if (!client)
return;
- while (iface)
+ for (; iface; iface = PREV_LINK(iface))
{
+ if (is_object(iface->iface->attrs) || is_local(iface->iface->attrs))
+ continue;
+
fprintf(client, "/*****************************************************************************\n");
fprintf(client, " * %s interface\n", iface->iface->name);
fprintf(client, " */\n");
@@ -526,8 +529,6 @@
write_expr_eval_routine_list(client, iface->iface->name);
write_stubdescriptor(iface->iface, expr_eval_routines);
}
-
- iface = PREV_LINK(iface);
}
fclose(client);
diff --git a/tools/widl/server.c b/tools/widl/server.c
index a7f3a74..3abd35e 100644
--- a/tools/widl/server.c
+++ b/tools/widl/server.c
@@ -601,7 +601,7 @@
if (!do_server)
return;
- if (!iface)
+ if (!ifaces)
return;
END_OF_LIST(iface);
@@ -609,8 +609,11 @@
if (!server)
return;
- while (iface)
+ for (; iface; iface = PREV_LINK(iface))
{
+ if (is_object(iface->iface->attrs) || is_local(iface->iface->attrs))
+ continue;
+
fprintf(server, "/*****************************************************************************\n");
fprintf(server, " * %s interface\n", iface->iface->name);
fprintf(server, " */\n");
@@ -643,8 +646,6 @@
write_stubdescriptor(iface->iface, expr_eval_routines);
write_dispatchtable(iface->iface);
}
-
- iface = PREV_LINK(iface);
}
fclose(server);