Owen Rudge : comctl32/datetime: Don't allow an invalid year to be typed in.

Alexandre Julliard julliard at winehq.org
Mon Mar 12 11:59:57 CDT 2012


Module: wine
Branch: master
Commit: 9de240bd0ea38c1c23803c01c425cc0c57fe5cd8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9de240bd0ea38c1c23803c01c425cc0c57fe5cd8

Author: Owen Rudge <orudge at 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:




More information about the wine-cvs mailing list