Improve error handling in `CMidiTrack::readVarLen()`
* Always check `failed()` aber `readByte()` consistently * Simplify coding style
This commit is contained in:
parent
b3737c04c2
commit
a8daa1bbff
|
@ -105,14 +105,14 @@ dword_t CMidiTrack::readVarLen()
|
|||
if ((value = readByte()) & 0x80)
|
||||
{
|
||||
value &= 0x7F;
|
||||
for (i =0; i < 4; i++)
|
||||
{
|
||||
value = ( value << 7 ) + (( c = readByte()) & 0x7F );
|
||||
if (failed() == true)
|
||||
if (failed()) {
|
||||
return value;
|
||||
}
|
||||
for (i = 0; i < 4; ++i) {
|
||||
value = (value << 7) + (( c = readByte()) & 0x7F );
|
||||
if (failed() || (c & 0x80) == 0)
|
||||
break;
|
||||
if ((c & 0x80) == 0)
|
||||
break;
|
||||
else if (i>=3)
|
||||
else if (i >= 3)
|
||||
errorFail(SMF_END_OF_FILE);
|
||||
}
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ dword_t CMidiTrack::readVarLen()
|
|||
if (value > 400)
|
||||
__dt(ppDebugTrack(2,"Large variable length data %d", value));
|
||||
#endif
|
||||
return ( value );
|
||||
return value;
|
||||
}
|
||||
|
||||
std::string CMidiTrack::readTextEvent()
|
||||
|
|
|
@ -72,7 +72,7 @@ public:
|
|||
|
||||
dword_t getTrackLength() {return m_trackLength;}
|
||||
void decodeTrack();
|
||||
bool failed() { return (m_midiError != SMF_NO_ERROR) ? true : false;}
|
||||
bool failed() { return m_midiError != SMF_NO_ERROR;}
|
||||
midiErrors_t getMidiError() { return m_midiError;}
|
||||
|
||||
int length() {return m_trackEventQueue->length();}
|
||||
|
@ -107,7 +107,7 @@ private:
|
|||
if (m_trackLengthCounter != 0 )
|
||||
{
|
||||
c = static_cast<byte_t>(m_file.get());
|
||||
if (m_file.fail() == true)
|
||||
if (m_file.fail())
|
||||
errorFail(SMF_END_OF_FILE);
|
||||
m_trackLengthCounter--;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue