summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-03-05 14:38:49 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-03-05 14:38:49 +0000
commit7637fd76a27d8a97cd32d7597d5afb3361fe0d28 (patch)
tree5758744be7d9e78f8ac1077612ffadc1d018ed21 /src
parentf0938cf1d6172e773f16257daf56b194c9d67117 (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.cc23
-rw-r--r--src/util.h15
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))) {
diff --git a/src/util.h b/src/util.h
index 4aefe6b0..e98a9103 100644
--- a/src/util.h
+++ b/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,