[PATCH 2/3] comctl32: Do ascii to integer conversion only once.
Lei Zhang
thestig at google.com
Tue Nov 25 17:09:31 CST 2008
Don't do vkCode-'0' everywhere.
-------------- next part --------------
From 1018e60d34dc5aabcdd9dd708681867fda167a7e Mon Sep 17 00:00:00 2001
From: Lei Zhang <thestig at google.com>
Date: Tue, 25 Nov 2008 14:19:19 -0800
Subject: [PATCH 2/3] comctl32: Do ascii to integer conversion only once.
---
dlls/comctl32/datetime.c | 40 +++++++++++++++++++++-------------------
1 files changed, 21 insertions(+), 19 deletions(-)
diff --git a/dlls/comctl32/datetime.c b/dlls/comctl32/datetime.c
index e953178..de31fa0 100644
--- a/dlls/comctl32/datetime.c
+++ b/dlls/comctl32/datetime.c
@@ -954,30 +954,32 @@ DATETIME_Char (DATETIME_INFO *infoPtr, WPARAM vkCode, LPARAM keyData)
int fieldNum = infoPtr->select & DTHT_DATEFIELD;
if (vkCode >= '0' && vkCode <= '9') {
+ int num = vkCode-'0';
+
/* this is a somewhat simplified version of what Windows does */
SYSTEMTIME *date = &infoPtr->date;
switch (infoPtr->fieldspec[fieldNum]) {
case ONEDIGITYEAR:
case TWODIGITYEAR:
date->wYear = date->wYear - (date->wYear%100) +
- (date->wYear%10)*10 + (vkCode-'0');
+ (date->wYear%10)*10 + num;
date->wDayOfWeek = DATETIME_CalculateDayOfWeek(
date->wDay,date->wMonth,date->wYear);
DATETIME_SendDateTimeChangeNotify (infoPtr);
break;
case INVALIDFULLYEAR:
case FULLYEAR:
- date->wYear = (date->wYear%1000)*10 + (vkCode-'0');
+ date->wYear = (date->wYear%1000)*10 + num;
date->wDayOfWeek = DATETIME_CalculateDayOfWeek(
date->wDay,date->wMonth,date->wYear);
DATETIME_SendDateTimeChangeNotify (infoPtr);
break;
case ONEDIGITMONTH:
case TWODIGITMONTH:
- if ((date->wMonth%10) > 1 || (vkCode-'0') > 2)
- date->wMonth = vkCode-'0';
+ if ((date->wMonth%10) > 1 || num > 2)
+ date->wMonth = num;
else
- date->wMonth = (date->wMonth%10)*10+vkCode-'0';
+ date->wMonth = (date->wMonth%10)*10+num;
date->wDayOfWeek = DATETIME_CalculateDayOfWeek(
date->wDay,date->wMonth,date->wYear);
DATETIME_SendDateTimeChangeNotify (infoPtr);
@@ -985,46 +987,46 @@ DATETIME_Char (DATETIME_INFO *infoPtr, WPARAM vkCode, LPARAM keyData)
case ONEDIGITDAY:
case TWODIGITDAY:
/* probably better checking here would help */
- if ((date->wDay%10) >= 3 && (vkCode-'0') > 1)
- date->wDay = vkCode-'0';
+ if ((date->wDay%10) >= 3 && num > 1)
+ date->wDay = num;
else
- date->wDay = (date->wDay%10)*10+vkCode-'0';
+ date->wDay = (date->wDay%10)*10+num;
date->wDayOfWeek = DATETIME_CalculateDayOfWeek(
date->wDay,date->wMonth,date->wYear);
DATETIME_SendDateTimeChangeNotify (infoPtr);
break;
case ONEDIGIT12HOUR:
case TWODIGIT12HOUR:
- if ((date->wHour%10) > 1 || (vkCode-'0') > 2)
- date->wHour = vkCode-'0';
+ if ((date->wHour%10) > 1 || num > 2)
+ date->wHour = num;
else
- date->wHour = (date->wHour%10)*10+vkCode-'0';
+ date->wHour = (date->wHour%10)*10+num;
DATETIME_SendDateTimeChangeNotify (infoPtr);
break;
case ONEDIGIT24HOUR:
case TWODIGIT24HOUR:
if ((date->wHour%10) > 2)
- date->wHour = vkCode-'0';
- else if ((date->wHour%10) == 2 && (vkCode-'0') > 3)
- date->wHour = vkCode-'0';
+ date->wHour = num;
+ else if ((date->wHour%10) == 2 && num > 3)
+ date->wHour = num;
else
- date->wHour = (date->wHour%10)*10+vkCode-'0';
+ date->wHour = (date->wHour%10)*10+num;
DATETIME_SendDateTimeChangeNotify (infoPtr);
break;
case ONEDIGITMINUTE:
case TWODIGITMINUTE:
if ((date->wMinute%10) > 5)
- date->wMinute = vkCode-'0';
+ date->wMinute = num;
else
- date->wMinute = (date->wMinute%10)*10+vkCode-'0';
+ date->wMinute = (date->wMinute%10)*10+num;
DATETIME_SendDateTimeChangeNotify (infoPtr);
break;
case ONEDIGITSECOND:
case TWODIGITSECOND:
if ((date->wSecond%10) > 5)
- date->wSecond = vkCode-'0';
+ date->wSecond = num;
else
- date->wSecond = (date->wSecond%10)*10+vkCode-'0';
+ date->wSecond = (date->wSecond%10)*10+num;
DATETIME_SendDateTimeChangeNotify (infoPtr);
break;
}
--
1.5.4.5
More information about the wine-patches
mailing list