[PATCH] msvcp120: Avoid type conversion warnings in test_tr2_sys__dir_operation.

Piotr Caban piotr.caban at gmail.com
Thu May 7 03:14:07 CDT 2020


Hi Gerald,

I think I would prefer to go with additional enum value approach. Even 
the C11 standard gives such assignment as an example of when compiler 
may generate a warning (Annex I, Common warnings in final draft). It 
also states that type = 0xdeadbeef is an example of "undefined behavior" 
(signed integer overflow).

Something like this should work:
enum file_type {
     file_type_test_init = -1,
...
err = 0xdeadbeef;
type = file_type_test_init;

Thanks,
Piotr

On 5/6/20 10:40 PM, Gerald Pfeifer wrote:
> On Tue, 5 May 2020, Piotr Caban wrote:
>>> +    type = 0xdeadbeef;
>> I guess this assignment will work on all compilers. Isn't assigning
>> the value outside of enum range unspecified in C standard?
> 
> Based on your question I dug into the C11 standard and found
> 
>    "An identifier declared as an enumeration constant has type int."
> 
> So that should not be a concern.  And if it turns out it ever triggers
> something, we can...
> 
>> I don't know if it's a valid concern but I'm worried it may still cause
>> a warning on some compilers (I don't know any that actually warns in
>> this case). How about adding a new value to enum and using it in tests
>> for uninitialized value (or just using 0)?
> 
> ...always follow the approach you outline (which will be easier than
> since there is a single assignment to adjust, not the current double
> assignment).
> 
> If after the above you'd still like to see us use 0x0 or an distinct
> member of the enum (how would you call that?) let me know and I'll cook
> a new patch.
> 
> Gerald
> 




More information about the wine-devel mailing list