misc: Restore ostream flags where needed
authorAndreas Hansson <andreas.hansson@arm.com>
Fri, 19 Sep 2014 14:35:09 +0000 (10:35 -0400)
committerAndreas Hansson <andreas.hansson@arm.com>
Fri, 19 Sep 2014 14:35:09 +0000 (10:35 -0400)
This patch ensures we adhere to the normal ostream usage rules, and
restore the flags after modifying them.

src/base/cprintf_formats.hh
src/sim/system.cc

index 991238deec7b78154c51d8cf9be7aab8c3bcda27..5b3b344325c0be60f03199f764a091463c3a2aa3 100644 (file)
@@ -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 <typename T>
@@ -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 <typename T>
index fe5be23dc6e4f15a0fbcb6f8f97b8e9fec4cf6bc..c0b9486f47dfb31ab7610428b8334201ff8306ad 100644 (file)
@@ -418,12 +418,16 @@ System::workItemEnd(uint32_t tid, uint32_t workid)
 void
 System::printSystems()
 {
+    ios::fmtflags flags(cerr.flags());
+
     vector<System *>::iterator i = systemList.begin();
     vector<System *>::iterator end = systemList.end();
     for (; i != end; ++i) {
         System *sys = *i;
         cerr << "System " << sys->name() << ": " << hex << sys << endl;
     }
+
+    cerr.flags(flags);
 }
 
 void