https://bugs.winehq.org/show_bug.cgi?id=38962
Bug ID: 38962 Summary: expr.c:234 and 235 attempted computation of 1 << 31 should be 1u << 31 Product: Wine Version: 1.7.47 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: tools Assignee: wine-bugs@winehq.org Reporter: vitti570@gmail.com Distribution: ---
Running widl, in tools/widl/expr.c lines 234 and 235:
cast_mask = ((1 << (cast_type_bits - 1)) - 1) | 1 << (cast_type_bits - 1);
cast_type_bits is 32 thus causing computation of 1 << 31 which cannot be represented in type 'int'. This is illegal and undefined. It should be cast_mask = ((1u << (cast_type_bits - 1)) - 1) | 1u << (cast_type_bits - 1);
instead.