[ros-diffs] [jgardou] 53480: [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.

jgardou at svn.reactos.org jgardou at svn.reactos.org
Sun Aug 28 15:32:09 UTC 2011


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))
   {




More information about the Ros-diffs mailing list