Output: Verify output files are open after opening them.
authorAli Saidi <saidi@eecs.umich.edu>
Thu, 2 Oct 2008 16:46:57 +0000 (12:46 -0400)
committerAli Saidi <saidi@eecs.umich.edu>
Thu, 2 Oct 2008 16:46:57 +0000 (12:46 -0400)
src/base/stats/text.cc
src/sim/serialize.cc

index 6f40d92c859ff2d418a144825258f71c81b00093..f65b7777715d2088492dc81ea1220eca48bba44e 100644 (file)
@@ -107,7 +107,8 @@ Text::open(std::ostream &_stream)
 
     mystream = false;
     stream = &_stream;
-    assert(valid());
+    if (!valid())
+        fatal("Unable to open output stream for writing\n");
 }
 
 void
@@ -118,13 +119,14 @@ Text::open(const std::string &file)
 
     mystream = true;
     stream = new ofstream(file.c_str(), ios::trunc);
-    assert(valid());
+    if (!valid())
+        fatal("Unable to open statistics file for writing\n");
 }
 
 bool
 Text::valid() const
 {
-    return stream != NULL;
+    return stream != NULL && stream->good();
 }
 
 void
index 7050779b21faddb55547a63c2bda996a9c6e8a59..a4851d3f6a49b19c09cf3788335c4dbcf83fcac4 100644 (file)
@@ -405,6 +405,8 @@ Serializable::serializeAll(const std::string &cpt_dir)
     string cpt_file = dir + Checkpoint::baseFilename;
     ofstream outstream(cpt_file.c_str());
     time_t t = time(NULL);
+    if (!outstream.is_open())
+        fatal("Unable to open file %s for writing\n", cpt_file.c_str());
     outstream << "// checkpoint generated: " << ctime(&t);
 
     globals.serialize(outstream);