From 32c111eda40269b0047ba3c109b7a2ba878d2544 Mon Sep 17 00:00:00 2001 From: Andreas Hansson Date: Fri, 19 Sep 2014 10:35:09 -0400 Subject: misc: Restore ostream flags where needed This patch ensures we adhere to the normal ostream usage rules, and restore the flags after modifying them. --- src/base/cprintf_formats.hh | 8 ++++++++ src/sim/system.cc | 4 ++++ 2 files changed, 12 insertions(+) (limited to 'src') diff --git a/src/base/cprintf_formats.hh b/src/base/cprintf_formats.hh index 991238dee..5b3b34432 100644 --- a/src/base/cprintf_formats.hh +++ b/src/base/cprintf_formats.hh @@ -88,6 +88,8 @@ _format_integer(std::ostream &out, const T &data, Format &fmt) { using namespace std; + ios::fmtflags flags(out.flags()); + switch (fmt.base) { case Format::hex: out.setf(std::ios::hex, std::ios::basefield); @@ -137,6 +139,8 @@ _format_integer(std::ostream &out, const T &data, Format &fmt) out.setf(std::ios::uppercase); out << data; + + out.flags(flags); } template @@ -145,6 +149,8 @@ _format_float(std::ostream &out, const T &data, Format &fmt) { using namespace std; + ios::fmtflags flags(out.flags()); + switch (fmt.float_format) { case Format::scientific: if (fmt.precision != -1) { @@ -189,6 +195,8 @@ _format_float(std::ostream &out, const T &data, Format &fmt) } out << data; + + out.flags(flags); } template diff --git a/src/sim/system.cc b/src/sim/system.cc index fe5be23dc..c0b9486f4 100644 --- a/src/sim/system.cc +++ b/src/sim/system.cc @@ -418,12 +418,16 @@ System::workItemEnd(uint32_t tid, uint32_t workid) void System::printSystems() { + ios::fmtflags flags(cerr.flags()); + vector::iterator i = systemList.begin(); vector::iterator end = systemList.end(); for (; i != end; ++i) { System *sys = *i; cerr << "System " << sys->name() << ": " << hex << sys << endl; } + + cerr.flags(flags); } void -- cgit v1.2.3