Alexandre Julliard : widl: Also compute buffer size for non-ref pointers.

Alexandre Julliard julliard at winehq.org
Wed May 25 11:28:12 CDT 2011


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Tue May 24 23:53:11 2011 +0200

widl: Also compute buffer size for non-ref pointers.

---

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

diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c
index f6bb2f9..4bdc94c 100644
--- a/tools/widl/typegen.c
+++ b/tools/widl/typegen.c
@@ -3185,13 +3185,19 @@ static unsigned int get_required_buffer_size_type(
         break;
 
     case TGT_POINTER:
-        if (get_pointer_fc(type, attrs, toplevel_param) == RPC_FC_RP)
         {
+            unsigned int size, align;
             const type_t *ref = type_pointer_get_ref(type);
             if (is_string_type( attrs, ref )) break;
-            return get_required_buffer_size_type( ref, name, ref->attrs, FALSE, alignment );
+            if (!(size = get_required_buffer_size_type( ref, name, NULL, FALSE, &align ))) break;
+            if (get_pointer_fc(type, attrs, toplevel_param) != RPC_FC_RP)
+            {
+                size += 4 + align;
+                align = 4;
+            }
+            *alignment = align;
+            return size;
         }
-        break;
 
     case TGT_ARRAY:
         if (get_pointer_fc(type, attrs, toplevel_param) == RPC_FC_RP)




More information about the wine-cvs mailing list