Don't use parseInt in cookie_helper

pull/28/head
Tatsuhiro Tsujikawa 2012-09-27 00:16:22 +09:00
parent f75402739b
commit a879d75aaa
1 changed files with 19 additions and 5 deletions

View File

@ -65,6 +65,20 @@ std::string::const_iterator getNextDigit
}
} // namespace
namespace {
template<typename InputIterator>
int getInteger(InputIterator first, InputIterator last)
{
int res = 0;
// We assume *dest won't overflow.
for(; first != last; ++first) {
res *= 10;
res += (*first)-'0';
}
return res;
}
} // namespace
bool parseDate
(time_t& time,
std::string::const_iterator first,
@ -117,9 +131,9 @@ bool parseDate
goto NOT_TIME;
}
foundTime = true;
hour = util::parseInt(std::string((*i).begin(), hEnd));
minute = util::parseInt(std::string(hEnd+1, mEnd));
second = util::parseInt(std::string(mEnd+1, sEnd));
hour = getInteger((*i).begin(), hEnd);
minute = getInteger(hEnd+1, mEnd);
second = getInteger(mEnd+1, sEnd);
continue;
NOT_TIME:
;
@ -129,7 +143,7 @@ bool parseDate
size_t len = std::distance((*i).begin(), j);
if(1 <= len && len <= 2) {
foundDayOfMonth = true;
dayOfMonth = util::parseInt(std::string((*i).begin(), j));
dayOfMonth = getInteger((*i).begin(), j);
continue;
}
}
@ -160,7 +174,7 @@ bool parseDate
size_t len = std::distance((*i).begin(), j);
if(1 <= len && len <= 4) {
foundYear = true;
year = util::parseInt(std::string((*i).begin(), j));
year = getInteger((*i).begin(), j);
continue;
}
}