Robert Shearman : widl: Write pointer calls for all non-basetype pointer parameters to functions.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Mar 31 13:04:51 CST 2006


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

Author: Robert Shearman <rob at codeweavers.com>
Date:   Fri Mar 31 12:46:43 2006 +0100

widl: Write pointer calls for all non-basetype pointer parameters to functions.

---

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

diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c
index 673eca2..e58bc17 100644
--- a/tools/widl/typegen.c
+++ b/tools/widl/typegen.c
@@ -1163,8 +1163,12 @@ static size_t write_typeformatstring_var
     const type_t *type = var->type;
     int ptr_level = var->ptr_level;
 
+    chat("write_typeformatstring_var: %s\n", var->name);
+
     while (TRUE)
     {
+        chat("write_typeformatstring: type->type = 0x%x, type->name = %s, ptr_level = %d\n", type->type, type->name, ptr_level);
+
         if (is_string_type(var->attrs, ptr_level, var->array))
             return write_string_tfs(file, var->attrs, type, var->array, var->name, typeformat_offset);
 
@@ -1646,7 +1650,7 @@ void write_remoting_arguments(FILE *file
         }
         else
         {
-            if (pointer_type == RPC_FC_RP)
+            if ((var->ptr_level == 1) && (pointer_type == RPC_FC_RP) && is_base_type(var->type->type))
             {
                 unsigned int size;
                 switch (var->type->type)
@@ -1711,7 +1715,7 @@ void write_remoting_arguments(FILE *file
                 write_type(file, var->type, NULL, var->tname);
                 fprintf(file, ");\n");
             }
-            else if (pointer_type == RPC_FC_UP)
+            else
             {
                 print_file(file, indent, "NdrPointer%s(\n", function_from_phase(phase));
                 indent++;
@@ -1723,10 +1727,6 @@ void write_remoting_arguments(FILE *file
                     print_file(file, indent, "(unsigned char *)0);\n");
                 indent--;
             }
-            else if (pointer_type == RPC_FC_FP)
-            {
-                error("write_remoting_arguments: Unimplemented for full pointers to base types\n");
-            }
         }
         fprintf(file, "\n");
     }




More information about the wine-cvs mailing list