Robert Shearman : widl: Treat variables with array indices the same as pointers.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Dec 26 11:46:50 CST 2005


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

Author: Robert Shearman <rob at codeweavers.com>
Date:   Mon Dec 26 13:13:04 2005 +0100

widl: Treat variables with array indices the same as pointers.

---

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

diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c
index d20f566..c68c4a6 100644
--- a/tools/widl/typegen.c
+++ b/tools/widl/typegen.c
@@ -293,7 +293,7 @@ void marshall_arguments(FILE *file, int 
     while (NEXT_LINK(var)) var = NEXT_LINK(var);
     for (; var; *type_offset += get_size_typeformatstring_var(var), var = PREV_LINK(var))
     {
-        if (var->ptr_level == 0)
+        if (var->ptr_level == 0 && !var->array)
         {
             unsigned int size;
             unsigned int alignment = 0;
@@ -351,7 +351,8 @@ void marshall_arguments(FILE *file, int 
 
             last_size = size;
         }
-        else if (var->ptr_level == 1)
+        else if (var->ptr_level == 1 ||
+            (var->ptr_level == 0 && var->array && !NEXT_LINK(var->array)))
         {
             if (is_attr(var->attrs, ATTR_STRING))
             {
@@ -397,7 +398,7 @@ void unmarshall_arguments(FILE *file, in
     while (NEXT_LINK(var)) var = NEXT_LINK(var);
     for (; var; *type_offset += get_size_typeformatstring_var(var), var = PREV_LINK(var))
     {
-        if (var->ptr_level == 0)
+        if (var->ptr_level == 0 && !var->array)
         {
             unsigned int size;
             unsigned int alignment = 0;
@@ -456,7 +457,8 @@ void unmarshall_arguments(FILE *file, in
 
             last_size = size;
         }
-        else if (var->ptr_level == 1)
+        else if (var->ptr_level == 1 ||
+            (var->ptr_level == 0 && var->array && !NEXT_LINK(var->array)))
         {
             if (is_attr(var->attrs, ATTR_STRING))
             {




More information about the wine-cvs mailing list