Module: wine Branch: master Commit: 9de240bd0ea38c1c23803c01c425cc0c57fe5cd8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9de240bd0ea38c1c23803c01c4...
Author: Owen Rudge orudge@codeweavers.com Date: Thu Mar 8 11:34:23 2012 +0000
comctl32/datetime: Don't allow an invalid year to be typed in.
---
dlls/comctl32/datetime.c | 17 +++++++++++++++-- 1 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/dlls/comctl32/datetime.c b/dlls/comctl32/datetime.c index 3ad9204..d67e6e3 100644 --- a/dlls/comctl32/datetime.c +++ b/dlls/comctl32/datetime.c @@ -847,6 +847,7 @@ DATETIME_ApplySelectedField (DATETIME_INFO *infoPtr) int fieldNum = infoPtr->select & DTHT_DATEFIELD; int i, val=0, clamp_day=0; SYSTEMTIME date = infoPtr->date; + int oldyear;
if (infoPtr->select == -1 || infoPtr->nCharsEntered == 0) return; @@ -859,13 +860,25 @@ DATETIME_ApplySelectedField (DATETIME_INFO *infoPtr) switch (infoPtr->fieldspec[fieldNum]) { case ONEDIGITYEAR: case TWODIGITYEAR: + oldyear = date.wYear; date.wYear = date.wYear - (date.wYear%100) + val; - clamp_day = 1; + + if (DATETIME_IsDateInValidRange(infoPtr, &date)) + clamp_day = 1; + else + date.wYear = oldyear; + break; case INVALIDFULLYEAR: case FULLYEAR: + oldyear = date.wYear; date.wYear = val; - clamp_day = 1; + + if (DATETIME_IsDateInValidRange(infoPtr, &date)) + clamp_day = 1; + else + date.wYear = oldyear; + break; case ONEDIGITMONTH: case TWODIGITMONTH: