mirror of https://github.com/aria2/aria2
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.ccpull/1/head
parent
f0938cf1d6
commit
7637fd76a2
|
@ -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
|
||||
|
|
23
src/util.cc
23
src/util.cc
|
@ -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))) {
|
||||
|
|
15
src/util.h
15
src/util.h
|
@ -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,
|
||||
|
|
|
@ -775,8 +775,14 @@ 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));
|
||||
}
|
||||
}
|
||||
|
||||
void UtilTest::testUitos()
|
||||
|
|
Loading…
Reference in New Issue