From c6d2420d097cecc0d327c97980b916f5b455a0fd Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Sat, 21 Feb 2009 21:57:55 -0400 Subject: Fixed an accumulator bug that was mangling errors --- src/accum.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/accum.cc b/src/accum.cc index ac98c8cf..d1de4965 100644 --- a/src/accum.cc +++ b/src/accum.cc @@ -46,6 +46,7 @@ std::streamsize straccbuf::xsputn(const char * s, std::streamsize num) // Every item thereafter is an argument that substitutes for %# in the // format string + bool matched = false; for (const char * p = str.c_str(); *p; p++) { if (*p == '%') { const char * q = p + 1; @@ -53,6 +54,7 @@ std::streamsize straccbuf::xsputn(const char * s, std::streamsize num) std::size_t(*q - '0') == index) { p++; buf << std::string(s, num); + matched = true; } else { buf << *p; } @@ -60,9 +62,11 @@ std::streamsize straccbuf::xsputn(const char * s, std::streamsize num) buf << *p; } } + if (! matched) + buf << std::string(s, num); + str = buf.str(); index++; - return num; } } -- cgit v1.2.3