widl: duplicate type in case of argument with range attribute

Jérôme Gardou jerome.gardou at laposte.net
Tue Aug 30 12:02:14 CDT 2011

Le 30/08/2011 17:50, Jérôme Gardou a écrit :
> Hello.
> Maybe the comment isn't clear enough.
> The ranges are correctly output into the format string, but the offset 
> of each output is lost during the processing. For instance, declaring 
> a function like this one :
> DWORD Test(
>     [in, range(0, 1024)] DWORD dwParam1,
>     [in, range(0, 255)] DWORD dwParam2);
> would output both parameter declarations into the type format string 
> with correct range values, but the offsets into the procedure format 
> string would both point to the last one.
> I'll try to write a test to show this behaviour, but I'm not sure of 
> how to integrate this in wine test suite.
> Note : this problem manifests itself when -Oif flag is enabled.
> Regards.
> Jérôme.
> Le 30/08/2011 12:46, Alexandre Julliard a écrit :
>> Jérôme Gardou<jerome.gardou at laposte.net>  writes:
>>> @@ -1418,6 +1418,11 @@ static var_t *declare_var(attr_list_t *attrs, 
>>> decl_spec_t *decl_spec, const decl
>>>     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);
>> You shouldn't need that. The range should go with the variable and be
>> output again for each type. Please add a test case showing the problem.
Sorry, I forgot that the policy here was to reply after the previous mail.

Anyway, I've looked into this a bit, and it seems that the place to 
write a proper test is rpcrt4 test suite.
While writing the test would per se be very easy, the problem won't show 
up if -Oif isn't set on the tested idl file. Adding this to the 
EXTRAIDLFLAGS variable in Makefile.in would do the trick, but I doubt 
that this is what you want.

Any hint on the way to proceed would be greatly appreciated.


More information about the wine-devel mailing list