Allocate another 4 bytes for unique pointers to simple types.
authorEric Kohl <eric.kohl@reactos.org>
Sat, 26 Nov 2005 11:44:06 +0000 (11:44 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Sat, 26 Nov 2005 11:44:06 +0000 (11:44 +0000)
This fixes bug #1048.

svn path=/trunk/; revision=19632

reactos/tools/widl/ChangeLog
reactos/tools/widl/client.c
reactos/tools/widl/server.c

index 85690de..d981877 100644 (file)
@@ -1,5 +1,12 @@
 ChangeLog
 
 ChangeLog
 
+2005-11-26 ekohl
+
+   tools/widl/client.c
+   tools/widl/server.c
+
+- Allocate another 4 bytes for unique pointers to simple types.
+
 2005-10-16 ekohl
 
    tools/widl/client.c
 2005-10-16 ekohl
 
    tools/widl/client.c
index b54d969..794878d 100644 (file)
@@ -731,6 +731,9 @@ static void print_message_buffer_size(func_t *func, unsigned int *type_offset)
                                   __FUNCTION__,__LINE__, var->type->type);
                             return;
                         }
                                   __FUNCTION__,__LINE__, var->type->type);
                             return;
                         }
+
+                        if (unique_attr)
+                            size += 4;
                     }
                     else
                     {
                     }
                     else
                     {
index 0701cac..e9e94bb 100644 (file)
@@ -649,6 +649,7 @@ static void print_message_buffer_size(func_t *func, unsigned int *type_offset)
             out_attr = is_attr(var->attrs, ATTR_OUT);
             string_attr = is_attr(var->attrs, ATTR_STRING);
             sizeis_attr = get_attrp(var->attrs, ATTR_SIZEIS);
             out_attr = is_attr(var->attrs, ATTR_OUT);
             string_attr = is_attr(var->attrs, ATTR_STRING);
             sizeis_attr = get_attrp(var->attrs, ATTR_SIZEIS);
+            unique_attr = is_attr(var->attrs, ATTR_UNIQUE);
 
             if (out_attr)
             {
 
             if (out_attr)
             {
@@ -708,6 +709,11 @@ static void print_message_buffer_size(func_t *func, unsigned int *type_offset)
                                   __FUNCTION__,__LINE__, var->type->type);
                             return;
                         }
                                   __FUNCTION__,__LINE__, var->type->type);
                             return;
                         }
+
+                        if (unique_attr)
+                        {
+                            size += 4;
+                        }
                     }
                 }
                 else if (var->type->type == RPC_FC_RP)
                     }
                 }
                 else if (var->type->type == RPC_FC_RP)