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