Index: libs/ardour/midi_diskstream.cc
===================================================================
--- libs/ardour/midi_diskstream.cc	(revision 9187)
+++ libs/ardour/midi_diskstream.cc	(working copy)
@@ -529,7 +529,13 @@
 	}
 
 	if (nominally_recording || rec_nframes) {
+		if (!_source_port)
+			get_input_sources();
 
+		/* FIXME: throw a warning of some sort? */
+		if (!_source_port)
+			return 1;
+
 		// Pump entire port buffer into the ring buffer (FIXME: split cycles?)
 		MidiBuffer& buf = _source_port->get_midi_buffer(nframes);
 		for (MidiBuffer::iterator i = buf.begin(); i != buf.end(); ++i) {
