Alexandre Julliard : widl: Make sure the token variables are always initialized properly.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Feb 2 07:09:18 CST 2006


Module: wine
Branch: refs/heads/master
Commit: 0f2a642d70c200283d9d0fb8ca7307f06e12fab7
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=0f2a642d70c200283d9d0fb8ca7307f06e12fab7

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Feb  2 13:22:47 2006 +0100

widl: Make sure the token variables are always initialized properly.

---

 tools/widl/widl.c |   16 +++++++++++++---
 1 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/tools/widl/widl.c b/tools/widl/widl.c
index 02e7eee..765fe06 100644
--- a/tools/widl/widl.c
+++ b/tools/widl/widl.c
@@ -132,6 +132,15 @@ static char *make_token(const char *name
   return token;
 }
 
+/* duplicate a basename into a valid C token */
+static char *dup_basename_token(const char *name, const char *ext)
+{
+    char *p, *ret = dup_basename( name, ext );
+    /* map invalid characters to '_' */
+    for (p = ret; *p; p++) if (!isalnum(*p)) *p = '_';
+    return ret;
+}
+
 int main(int argc,char *argv[])
 {
   extern char* optarg;
@@ -244,22 +253,23 @@ int main(int argc,char *argv[])
 
   if (!proxy_name && do_proxies) {
     proxy_name = dup_basename(input_name, ".idl");
-    proxy_token = xstrdup(proxy_name);
     strcat(proxy_name, "_p.c");
   }
 
   if (!client_name && do_client) {
     client_name = dup_basename(input_name, ".idl");
-    client_token = xstrdup(client_name);
     strcat(client_name, "_c.c");
   }
 
   if (!server_name && do_server) {
     server_name = dup_basename(input_name, ".idl");
-    server_token = xstrdup(server_name);
     strcat(server_name, "_s.c");
   }
 
+  if (do_proxies) proxy_token = dup_basename_token(proxy_name,"_p.c");
+  if (do_client) client_token = dup_basename_token(client_name,"_c.c");
+  if (do_server) server_token = dup_basename_token(server_name,"_s.c");
+
   wpp_add_cmdline_define("__WIDL__");
 
   atexit(rm_tempfile);




More information about the wine-cvs mailing list