2010-03-05 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

Fixed the bug that util::itos(INT64_MIN) fails.
	* src/util.cc
	* src/util.h
	* test/UtilTest.cc
pull/1/head
Tatsuhiro Tsujikawa 2010-03-05 14:38:49 +00:00
parent f0938cf1d6
commit 7637fd76a2
4 changed files with 39 additions and 16 deletions

View File

@ -1,3 +1,10 @@
2010-03-05 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Fixed the bug that util::itos(INT64_MIN) fails.
* src/util.cc
* src/util.h
* test/UtilTest.cc
2010-03-05 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Fixed memory leak in SocketBuffer when _bufq is not empty when

View File

@ -139,6 +139,29 @@ std::pair<std::string, std::string> split(const std::string& src, const std::str
return hp;
}
std::string itos(int64_t value, bool comma)
{
bool flag = false;
std::string str;
if(value < 0) {
if(value == INT64_MIN) {
if(comma) {
str = "-9,223,372,036,854,775,808";
} else {
str = "-9223372036854775808";
}
return str;
}
flag = true;
value = -value;
}
str = uitos(value, comma);
if(flag) {
str.insert(str.begin(), '-');
}
return str;
}
int64_t difftv(struct timeval tv1, struct timeval tv2) {
if((tv1.tv_sec < tv2.tv_sec) ||
((tv1.tv_sec == tv2.tv_sec) && (tv1.tv_usec < tv2.tv_usec))) {

View File

@ -113,20 +113,7 @@ std::string uitos(T value, bool comma = false)
return str;
}
template<typename T>
std::string itos(T value, bool comma = false)
{
bool flag = false;
if(value < 0) {
flag = true;
value = -value;
}
std::string str = uitos(value, comma);
if(flag) {
str.insert(str.begin(), '-');
}
return str;
}
std::string itos(int64_t value, bool comma = false);
/**
* Computes difference in micro-seconds between tv1 and tv2,

View File

@ -775,7 +775,13 @@ void UtilTest::testItos()
}
{
int64_t i = INT64_MAX;
CPPUNIT_ASSERT_EQUAL(std::string("9,223,372,036,854,775,807"), util::itos(i, true));
CPPUNIT_ASSERT_EQUAL(std::string("9,223,372,036,854,775,807"),
util::itos(i, true));
}
{
int64_t i = INT64_MIN;
CPPUNIT_ASSERT_EQUAL(std::string("-9,223,372,036,854,775,808"),
util::itos(i, true));
}
}