From d3755f98a5fb8f7627d8b26db6511af55a430fc3 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 12 Oct 2003 03:01:07 +0000 Subject: [PATCH] fix crashes when files fail to open --- stepmania/src/RageSoundReader_MP3.cpp | 6 +++++- stepmania/src/RageSoundReader_Vorbisfile.cpp | 7 ++++++- stepmania/src/RageSoundReader_Vorbisfile.h | 1 + stepmania/src/RageSoundReader_WAV.cpp | 5 +++++ 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/stepmania/src/RageSoundReader_MP3.cpp b/stepmania/src/RageSoundReader_MP3.cpp index 8efaa3bee4..74e9c75e18 100644 --- a/stepmania/src/RageSoundReader_MP3.cpp +++ b/stepmania/src/RageSoundReader_MP3.cpp @@ -689,7 +689,11 @@ SoundReader_FileReader::OpenResult RageSoundReader_MP3::Open( CString filename_ { filename = filename_; rw = fopen(filename, "rb"); - ASSERT( rw ); + if( !rw ) + { + SetError( ssprintf("Couldn't open file: %s", strerror(errno)) ); + return OPEN_NO_MATCH; + } int ret = fseek( this->rw, 0, SEEK_END ); ASSERT( ret != -1 ); diff --git a/stepmania/src/RageSoundReader_Vorbisfile.cpp b/stepmania/src/RageSoundReader_Vorbisfile.cpp index f3686709b9..fca2bba032 100644 --- a/stepmania/src/RageSoundReader_Vorbisfile.cpp +++ b/stepmania/src/RageSoundReader_Vorbisfile.cpp @@ -70,7 +70,7 @@ SoundReader_FileReader::OpenResult RageSoundReader_Vorbisfile::Open(CString file if(f == NULL) { SetError(ssprintf("ogg fopen(%s) failed: %s", filename.c_str(), strerror(errno))); - return OPEN_MATCH_BUT_FAIL; + return OPEN_NO_MATCH; } int ret = ov_open(f, vf, NULL, 0); @@ -208,6 +208,11 @@ int RageSoundReader_Vorbisfile::GetSampleRate() const return vi->rate; } +RageSoundReader_Vorbisfile::RageSoundReader_Vorbisfile() +{ + vf = NULL; +} + RageSoundReader_Vorbisfile::~RageSoundReader_Vorbisfile() { if(vf) diff --git a/stepmania/src/RageSoundReader_Vorbisfile.h b/stepmania/src/RageSoundReader_Vorbisfile.h index 9a5cc4f3fc..b8579cb6d2 100644 --- a/stepmania/src/RageSoundReader_Vorbisfile.h +++ b/stepmania/src/RageSoundReader_Vorbisfile.h @@ -21,6 +21,7 @@ public: int SetPosition_Fast(int ms) { return SetPosition(ms, false); } int Read(char *buf, unsigned len); int GetSampleRate() const; + RageSoundReader_Vorbisfile(); ~RageSoundReader_Vorbisfile(); SoundReader *Copy() const; }; diff --git a/stepmania/src/RageSoundReader_WAV.cpp b/stepmania/src/RageSoundReader_WAV.cpp index b7222715f5..5d4164a507 100644 --- a/stepmania/src/RageSoundReader_WAV.cpp +++ b/stepmania/src/RageSoundReader_WAV.cpp @@ -511,6 +511,11 @@ SoundReader_FileReader::OpenResult RageSoundReader_WAV::Open( CString filename_ Input_Buffer_Ratio = 1; filename = filename_; rw = fopen(filename, "rb"); + if( !rw ) + { + SetError( ssprintf("Couldn't open file: %s", strerror(errno)) ); + return OPEN_NO_MATCH; + } memset(&fmt, 0, sizeof(fmt));