Rob Shearman : widl: Initialise ref pointers to basic and enum types to 0 in generated server code .

Alexandre Julliard julliard at winehq.org
Mon Mar 23 12:34:53 CDT 2009


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

Author: Rob Shearman <robertshearman at gmail.com>
Date:   Fri Mar 20 16:16:25 2009 +0000

widl: Initialise ref pointers to basic and enum types to 0 in generated server code.

Previously it was only done for pointers.

---

 tools/widl/typegen.c |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c
index 07a1d1d..1b7c79d 100644
--- a/tools/widl/typegen.c
+++ b/tools/widl/typegen.c
@@ -3822,8 +3822,25 @@ void assign_stub_out_args( FILE *file, int indent, const var_t *func, const char
             else
             {
                 fprintf(file, " = &%s_W%u;\n", local_var_prefix, i);
-                if (is_ptr(var->type) && !last_ptr(var->type))
+                switch (typegen_detect_type(type_pointer_get_ref(var->type), var->attrs, TDT_IGNORE_STRINGS))
+                {
+                case TGT_BASIC:
+                case TGT_ENUM:
+                case TGT_POINTER:
                     print_file(file, indent, "%s_W%u = 0;\n", local_var_prefix, i);
+                    break;
+                case TGT_STRUCT:
+                case TGT_UNION:
+                case TGT_USER_TYPE:
+                case TGT_IFACE_POINTER:
+                case TGT_ARRAY:
+                case TGT_CTXT_HANDLE:
+                case TGT_CTXT_HANDLE_POINTER:
+                case TGT_INVALID:
+                case TGT_STRING:
+                    /* not initialised */
+                    break;
+                }
                 i++;
             }
 




More information about the wine-cvs mailing list