diff --git a/tools/widl/header.c b/tools/widl/header.c
index ef77308..c618406 100644
--- a/tools/widl/header.c
+++ b/tools/widl/header.c
@@ -80,7 +80,7 @@
   return 0;
 }
 
-static void write_guid(const char *guid_prefix, const char *name, UUID *uuid)
+static void write_guid(const char *guid_prefix, const char *name, const UUID *uuid)
 {
   if (!uuid) return;
   fprintf(header, "DEFINE_GUID(%s_%s, 0x%08lx, 0x%04x, 0x%04x, 0x%02x,0x%02x, 0x%02x,"
@@ -333,7 +333,7 @@
   return 0;
 }
 
-static void check_for_user_types(var_t *v)
+static void check_for_user_types(const var_t *v)
 {
   while (v) {
     type_t *type = v->type;
@@ -355,7 +355,7 @@
       }
       else if (type->fields)
       {
-        var_t *fields = type->fields;
+        const var_t *fields = type->fields;
         while (NEXT_LINK(fields)) fields = NEXT_LINK(fields);
         check_for_user_types(fields);
       }
@@ -383,7 +383,7 @@
 
 void write_typedef(type_t *type, const var_t *names)
 {
-  char *tname = names->tname;
+  const char *tname = names->tname;
   const var_t *lname;
   while (NEXT_LINK(names)) names = NEXT_LINK(names);
   lname = names;
@@ -654,9 +654,9 @@
   }
 }
 
-static void do_write_c_method_def(const type_t *iface, char *name)
+static void do_write_c_method_def(const type_t *iface, const char *name)
 {
-  func_t *cur = iface->funcs;
+  const func_t *cur = iface->funcs;
 
   if (iface->ref) do_write_c_method_def(iface->ref, name);
 
@@ -665,7 +665,7 @@
   indent(header, 0);
   fprintf(header, "/*** %s methods ***/\n", iface->name);
   while (cur) {
-    var_t *def = cur->def;
+    const var_t *def = cur->def;
     if (!is_callas(def->attrs)) {
       indent(header, 0);
       write_type(header, def->type, def, def->tname);
@@ -692,14 +692,14 @@
 
 static void write_method_proto(const type_t *iface)
 {
-  func_t *cur = iface->funcs;
+  const func_t *cur = iface->funcs;
 
   if (!cur) return;
   while (NEXT_LINK(cur)) cur = NEXT_LINK(cur);
   while (cur) {
-    var_t *def = cur->def;
-    var_t *cas = is_callas(def->attrs);
-    var_t *args;
+    const var_t *def = cur->def;
+    const var_t *cas = is_callas(def->attrs);
+    const var_t *args;
     if (!is_local(def->attrs)) {
       /* proxy prototype */
       write_type(header, def->type, def, def->tname);
@@ -725,11 +725,11 @@
       check_for_user_types(args);
     }
     if (cas) {
-      func_t *m = iface->funcs;
+      const func_t *m = iface->funcs;
       while (m && strcmp(get_name(m->def), cas->name))
         m = NEXT_LINK(m);
       if (m) {
-        var_t *mdef = m->def;
+        const var_t *mdef = m->def;
         /* proxy prototype - use local prototype */
         write_type(header, mdef->type, mdef, mdef->tname);
         fprintf(header, " CALLBACK %s_", iface->name);
@@ -756,9 +756,9 @@
 
 static void write_function_proto(const type_t *iface)
 {
-  char *implicit_handle = get_attrp(iface->attrs, ATTR_IMPLICIT_HANDLE);
+  const char *implicit_handle = get_attrp(iface->attrs, ATTR_IMPLICIT_HANDLE);
   int explicit_handle = is_attr(iface->attrs, ATTR_EXPLICIT_HANDLE);
-  var_t* explicit_handle_var;
+  const var_t* explicit_handle_var;
 
   func_t *cur = iface->funcs;
   while (NEXT_LINK(cur)) cur = NEXT_LINK(cur);
@@ -813,19 +813,19 @@
 
 static void write_iface_guid(const type_t *iface)
 {
-  UUID *uuid = get_attrp(iface->attrs, ATTR_UUID);
+  const UUID *uuid = get_attrp(iface->attrs, ATTR_UUID);
   write_guid("IID", iface->name, uuid);
 } 
 
 static void write_dispiface_guid(const type_t *iface)
 {
-  UUID *uuid = get_attrp(iface->attrs, ATTR_UUID);
+  const UUID *uuid = get_attrp(iface->attrs, ATTR_UUID);
   write_guid("DIID", iface->name, uuid);
 }
 
 static void write_coclass_guid(class_t *cocl)
 {
-  UUID *uuid = get_attrp(cocl->attrs, ATTR_UUID);
+  const UUID *uuid = get_attrp(cocl->attrs, ATTR_UUID);
   write_guid("CLSID", cocl->name, uuid);
 }
 
diff --git a/tools/widl/widltypes.h b/tools/widl/widltypes.h
index 0534339..36d4aad 100644
--- a/tools/widl/widltypes.h
+++ b/tools/widl/widltypes.h
@@ -206,7 +206,7 @@
   expr_t *array;
   type_t *type;
   var_t *args;  /* for function pointers */
-  char *tname;
+  const char *tname;
   attr_t *attrs;
   expr_t *eval;
   long lval;
