Author: jgardou
Date: Sun Aug 28 15:32:08 2011
New Revision: 53480

URL: http://svn.reactos.org/svn/reactos?rev=53480&view=rev
Log:
[WIDL]
- duplicate type entry for parameters with the range attribute.
This fixes the problem that Eric Kohl detected.
This has already been sent to wine.

Modified:
    trunk/reactos/tools/widl/parser.tab.c
    trunk/reactos/tools/widl/parser.y

Modified: trunk/reactos/tools/widl/parser.tab.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/parser.tab.c?rev=53480&r1=53479&r2=53480&view=diff
==============================================================================
--- trunk/reactos/tools/widl/parser.tab.c [iso-8859-1] (original)
+++ trunk/reactos/tools/widl/parser.tab.c [iso-8859-1] Sun Aug 28 15:32:08 2011
@@ -5965,6 +5965,10 @@
   array_dims_t *arr = decl ? decl->array : NULL;
   type_t *func_type = decl ? decl->func_type : NULL;
   type_t *type = decl_spec->type;
+  
+  /* In case of a ranged type, duplicate it */
+  if(is_attr(attrs, ATTR_RANGE))
+    type = duptype(type, 1);
 
   if (is_attr(type->attrs, ATTR_INLINE))
   {

Modified: trunk/reactos/tools/widl/parser.y
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/parser.y?rev=53480&r1=53479&r2=53480&view=diff
==============================================================================
--- trunk/reactos/tools/widl/parser.y [iso-8859-1] (original)
+++ trunk/reactos/tools/widl/parser.y [iso-8859-1] Sun Aug 28 15:32:08 2011
@@ -1417,6 +1417,11 @@
   array_dims_t *arr = decl ? decl->array : NULL;
   type_t *func_type = decl ? decl->func_type : NULL;
   type_t *type = decl_spec->type;
+  
+  /* In case of a range attribute, duplicate the type to keep track of
+   * the min/max values in the type format string */
+  if(is_attr(attrs, ATTR_RANGE))
+    type = duptype(type, 1);
 
   if (is_attr(type->attrs, ATTR_INLINE))
   {


Reply via email to