A dead condition in dlls/oleaut32/variant.c

Gerald Pfeifer gerald at pfeifer.com
Thu Nov 30 03:43:48 CST 2017


dlls/oleaut32/variant.c has the following code

    else if ((dwVtBits & REAL_VTBITS) == VTBIT_DECIMAL)

where REAL_VTBITS is defined as VTBIT_R4|VTBIT_R8|VTBIT_CY with 
VTBIT_R4 := 1 << VT_R4 and VT_R4 := 4 in wtypes.h,
VTBIT_R8 := 1 << VT_R8 and VT_R8 := 5,
VTBIT_CY := 1 << VT_CY and VT_CY := 6.

VTBIT_DECIMAL, on the other hand is 1 << VT_DECIMAL with VT_DECIMAL = 14.

Now perhaps I am missing something quite obvious, but isn't that 
condition always false since REAL_VTBITS are disjoint from VTBIT_DECIMAL
and we are first masking bits 5, 6, and 7 and then comparing with bit 15?


(If you fix this, you may want to give credit to GCC 8 for pointing me
towards that code.)

Gerald



More information about the wine-devel mailing list