fix crashes when files fail to open
This commit is contained in:
@@ -689,7 +689,11 @@ SoundReader_FileReader::OpenResult RageSoundReader_MP3::Open( CString filename_
|
|||||||
{
|
{
|
||||||
filename = filename_;
|
filename = filename_;
|
||||||
rw = fopen(filename, "rb");
|
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 );
|
int ret = fseek( this->rw, 0, SEEK_END );
|
||||||
ASSERT( ret != -1 );
|
ASSERT( ret != -1 );
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ SoundReader_FileReader::OpenResult RageSoundReader_Vorbisfile::Open(CString file
|
|||||||
if(f == NULL)
|
if(f == NULL)
|
||||||
{
|
{
|
||||||
SetError(ssprintf("ogg fopen(%s) failed: %s", filename.c_str(), strerror(errno)));
|
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);
|
int ret = ov_open(f, vf, NULL, 0);
|
||||||
@@ -208,6 +208,11 @@ int RageSoundReader_Vorbisfile::GetSampleRate() const
|
|||||||
return vi->rate;
|
return vi->rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RageSoundReader_Vorbisfile::RageSoundReader_Vorbisfile()
|
||||||
|
{
|
||||||
|
vf = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
RageSoundReader_Vorbisfile::~RageSoundReader_Vorbisfile()
|
RageSoundReader_Vorbisfile::~RageSoundReader_Vorbisfile()
|
||||||
{
|
{
|
||||||
if(vf)
|
if(vf)
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ public:
|
|||||||
int SetPosition_Fast(int ms) { return SetPosition(ms, false); }
|
int SetPosition_Fast(int ms) { return SetPosition(ms, false); }
|
||||||
int Read(char *buf, unsigned len);
|
int Read(char *buf, unsigned len);
|
||||||
int GetSampleRate() const;
|
int GetSampleRate() const;
|
||||||
|
RageSoundReader_Vorbisfile();
|
||||||
~RageSoundReader_Vorbisfile();
|
~RageSoundReader_Vorbisfile();
|
||||||
SoundReader *Copy() const;
|
SoundReader *Copy() const;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -511,6 +511,11 @@ SoundReader_FileReader::OpenResult RageSoundReader_WAV::Open( CString filename_
|
|||||||
Input_Buffer_Ratio = 1;
|
Input_Buffer_Ratio = 1;
|
||||||
filename = filename_;
|
filename = filename_;
|
||||||
rw = fopen(filename, "rb");
|
rw = fopen(filename, "rb");
|
||||||
|
if( !rw )
|
||||||
|
{
|
||||||
|
SetError( ssprintf("Couldn't open file: %s", strerror(errno)) );
|
||||||
|
return OPEN_NO_MATCH;
|
||||||
|
}
|
||||||
|
|
||||||
memset(&fmt, 0, sizeof(fmt));
|
memset(&fmt, 0, sizeof(fmt));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user