Improve handling of invalid input in dlls/comctl32/datetime.c

Nikolay Sivov bunglehead at gmail.com
Fri Dec 25 15:11:02 CST 2009


On 12/26/2009 00:04, James McKenzie wrote:
> Nikolay Sivov wrote:
>    
>> On 12/25/2009 14:18, Gerald Pfeifer wrote:
>>      
>>> Otherwise max_count will be undefined in the following loop may do
>>> interesting things it seems.  (Does Coverity diagnose similar items?)
>>>
>>> Gerald
>>>
>>> ChangeLog:
>>> Improve handling of invalid input in DATETIME_ReturnFieldWidth.
>>>
>>> diff --git a/dlls/comctl32/datetime.c b/dlls/comctl32/datetime.c
>>> index c240d4f..08c7082 100644
>>> --- a/dlls/comctl32/datetime.c
>>> +++ b/dlls/comctl32/datetime.c
>>> @@ -38,6 +38,7 @@
>>>     *    -- FORMATCALLBACK
>>>     */
>>>
>>> +#include<assert.h>
>>>    #include<math.h>
>>>    #include<string.h>
>>>    #include<stdarg.h>
>>> @@ -619,6 +620,9 @@ DATETIME_ReturnFieldWidth (const DATETIME_INFO
>>> *infoPtr, HDC hdc, int count, SHO
>>>                lctype = LOCALE_SMONTHNAME1;
>>>                max_count = 12;
>>>                break;
>>> +        default:
>>> +            assert(0);
>>> +            max_count=0;
>>>            }
>>>
>>>            cx = 0;
>>>
>>>        
>> Hi, Gerald.
>>
>> This can't even happen. spec if filtered later with:
>> ---
>>          case THREECHARMONTH:
>>          case FULLMONTH:
>>          case THREECHARDAY:
>>          case FULLDAY:
>> ---
>> So no default case here.
>>
>>      
> Even if the default case cannot be reached, it is not a 'bad thing' to
> have one, even if it is an error message stating "Something went wrong,
> we should not get here" with an exit code...
>    
Why? There's no default case, treat is as 'if () {} else if () {} etc.'.
It's the same thing to have explicit initializers for all local 
variables even if I don't use it before
set some value. It's a pollution, especially if used to silence analyzer 
warnings.
> James McKenzie
>    




More information about the wine-devel mailing list