summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2011-09-22 15:15:30 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2011-09-22 15:15:30 +0200
commit76ef756a6babf9fa217bed2f7618cb00140b4306 (patch)
treed32788d5739c1ebafa8c73270134c62088210748
parenta52d11fbc14f8fb10deb93a5898f53a633acbec1 (diff)
ftparchive/cachedb.cc: rewrite to fix the fixed length field
-rw-r--r--ftparchive/cachedb.cc14
1 files changed, 9 insertions, 5 deletions
diff --git a/ftparchive/cachedb.cc b/ftparchive/cachedb.cc
index 080c2bbcc..24e3a1af8 100644
--- a/ftparchive/cachedb.cc
+++ b/ftparchive/cachedb.cc
@@ -297,11 +297,15 @@ bool CacheDB::LoadContents(bool const &GenOnly)
/*}}}*/
static string bytes2hex(uint8_t *bytes, size_t length) {
- char space[129];
- if (length * 2 > sizeof(space) - 1) length = (sizeof(space) - 1) / 2;
- for (size_t i = 0; i < length; i++)
- snprintf(&space[i*2], 3, "%02x", bytes[i]);
- return string(space);
+ char buf[3];
+ string space;
+
+ space.reserve(length*2 + 1);
+ for (size_t i = 0; i < length; i++) {
+ snprintf(buf, sizeof(buf), "%02x", bytes[i]);
+ space.append(buf);
+ }
+ return space;
}
static inline unsigned char xdig2num(char const &dig) {