diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-03-05 14:38:49 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-03-05 14:38:49 +0000 |
| commit | 7637fd76a27d8a97cd32d7597d5afb3361fe0d28 (patch) | |
| tree | 5758744be7d9e78f8ac1077612ffadc1d018ed21 /src | |
| parent | f0938cf1d6172e773f16257daf56b194c9d67117 (diff) | |
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/util.cc | 23 | ||||
| -rw-r--r-- | src/util.h | 15 |
2 files changed, 24 insertions, 14 deletions
diff --git a/src/util.cc b/src/util.cc index 354be86e..d69967c1 100644 --- a/src/util.cc +++ b/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))) { @@ -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, |
