1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

MidiFile::writeTo() method now returns false if unsuccessful

This commit is contained in:
ed 2016-12-05 12:56:34 +00:00
parent f6727f204b
commit cd752ed6af
2 changed files with 14 additions and 10 deletions

View file

@ -369,20 +369,21 @@ bool MidiFile::writeTo (OutputStream& out, int midiFileType)
{
jassert (midiFileType >= 0 && midiFileType <= 2);
out.writeIntBigEndian ((int) ByteOrder::bigEndianInt ("MThd"));
out.writeIntBigEndian (6);
out.writeShortBigEndian ((short) midiFileType);
out.writeShortBigEndian ((short) tracks.size());
out.writeShortBigEndian (timeFormat);
if (! out.writeIntBigEndian ((int) ByteOrder::bigEndianInt ("MThd"))) return false;
if (! out.writeIntBigEndian (6)) return false;
if (! out.writeShortBigEndian ((short) midiFileType)) return false;
if (! out.writeShortBigEndian ((short) tracks.size())) return false;
if (! out.writeShortBigEndian (timeFormat)) return false;
for (int i = 0; i < tracks.size(); ++i)
writeTrack (out, i);
if (! writeTrack (out, i))
return false;
out.flush();
return true;
}
void MidiFile::writeTrack (OutputStream& mainOut, const int trackNum)
bool MidiFile::writeTrack (OutputStream& mainOut, const int trackNum)
{
MemoryOutputStream out;
const MidiMessageSequence& ms = *tracks.getUnchecked (trackNum);
@ -437,7 +438,10 @@ void MidiFile::writeTrack (OutputStream& mainOut, const int trackNum)
out.write (m.getRawData(), (size_t) m.getRawDataSize());
}
mainOut.writeIntBigEndian ((int) ByteOrder::bigEndianInt ("MTrk"));
mainOut.writeIntBigEndian ((int) out.getDataSize());
if (! mainOut.writeIntBigEndian ((int) ByteOrder::bigEndianInt ("MTrk"))) return false;
if (! mainOut.writeIntBigEndian ((int) out.getDataSize())) return false;
mainOut << out;
return true;
}

View file

@ -177,7 +177,7 @@ private:
short timeFormat;
void readNextTrack (const uint8*, int size);
void writeTrack (OutputStream&, int trackNum);
bool writeTrack (OutputStream&, int trackNum);
JUCE_LEAK_DETECTOR (MidiFile)
};