diff --git a/stepmania/src/CryptHelpers.cpp b/stepmania/src/CryptHelpers.cpp index 72ca2492d5..a675cd2df4 100644 --- a/stepmania/src/CryptHelpers.cpp +++ b/stepmania/src/CryptHelpers.cpp @@ -134,9 +134,9 @@ bool RageFileSink::IsolatedFlush(bool hardFlush, bool blocking) if (!m_file.IsOpen()) throw Err("FileSink: output stream not opened"); - m_file.Flush(); - if( !m_file.IsGood() ) - throw WriteErr(); + + if( m_file.Flush() == -1 ) + throw WriteErr( m_file ); return false; } @@ -146,13 +146,12 @@ unsigned int RageFileSink::Put2(const byte *inString, unsigned int length, int m if (!m_file.IsOpen()) throw Err("FileSink: output stream not opened"); - m_file.Write((const char *)inString, length); + if( m_file.Write((const char *)inString, length) == -1 ) + throw WriteErr( m_file ); if (messageEnd) - m_file.Flush(); - - if( !m_file.IsGood() ) - throw WriteErr(); + if( m_file.Flush() == -1 ) + throw WriteErr( m_file ); return 0; } diff --git a/stepmania/src/CryptHelpers.h b/stepmania/src/CryptHelpers.h index f062056b30..fd5fb1d37f 100644 --- a/stepmania/src/CryptHelpers.h +++ b/stepmania/src/CryptHelpers.h @@ -66,7 +66,7 @@ public: Err(const std::string &s) : Exception(IO_ERROR, s) {} }; class OpenErr : public Err {public: OpenErr(const std::string &filename) : Err("FileSink: error opening file for writing: " + filename) {}}; - class WriteErr : public Err {public: WriteErr() : Err("FileSink: error writing file") {}}; + struct WriteErr : public Err { WriteErr(const RageFile &f) : Err("RageFileSink(" + f.GetPath() + "): write error: " + f.GetError()) {}}; RageFileSink() {} RageFileSink(const char *filename, bool binary=true)