correct types in MidiMessage + do not copy data if jack_midi_event_reserve() failed v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sun, 11 Oct 2020 17:41:53 +0200
branchv_0
changeset 25 e0627da77dad
parent 24 427b8d799a4a
child 26 a6d332fa816c
correct types in MidiMessage + do not copy data if jack_midi_event_reserve() failed
src/JackHandler.h
--- a/src/JackHandler.h	Wed Oct 07 23:10:28 2020 +0200
+++ b/src/JackHandler.h	Sun Oct 11 17:41:53 2020 +0200
@@ -57,8 +57,8 @@
 	 */
 	struct MidiMessage {
 		uint8_t buffer[4096] = {0};
-		uint32_t size;
-		uint32_t time;
+		size_t size;
+		jack_nframes_t time;
 	};
 
 	/**
@@ -84,7 +84,8 @@
 				MidiMessage m;
 				jack_ringbuffer_read(ringBuffer, (char*) &m, sizeof (MidiMessage));
 				jack_midi_data_t* midiData = jack_midi_event_reserve(jackPortBuffer, m.time, m.size);
-				memcpy(midiData, m.buffer, m.size);
+				if (midiData) memcpy(midiData, m.buffer, m.size);
+				else /* error: not enough space TODO: store and send later */;
 			}
 
 			if (pthread_mutex_trylock(&processingLock) == 0) {