diff options
author | Robin Gareus <robin@gareus.org> | 2015-04-28 02:53:20 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-04-28 03:07:11 +0200 |
commit | 1b1cbec00b9ecac8cd7431b89ec6490ca599ef89 (patch) | |
tree | baa97551c927a28f3e3a0b5a6aac73e12ac06c7d /gtk2_ardour | |
parent | 4aace9be681539d5b131f84337b871f8de39a6ec (diff) |
prevent live loops (format negative BBT)
can happen with empty tape-tracks
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor_regions.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gtk2_ardour/editor_regions.cc b/gtk2_ardour/editor_regions.cc index 1d6ac8c16c..d029e3fc74 100644 --- a/gtk2_ardour/editor_regions.cc +++ b/gtk2_ardour/editor_regions.cc @@ -690,6 +690,12 @@ EditorRegions::format_position (framepos_t pos, char* buf, size_t bufsize, bool Timecode::BBT_Time bbt; Timecode::Time timecode; + if (pos < 0) { + error << string_compose (_("EditorRegions::format_position: negative timecode position: %1"), pos) << endmsg; + snprintf (buf, bufsize, "invalid"); + return; + } + switch (ARDOUR_UI::instance()->secondary_clock->mode ()) { case AudioClock::BBT: _session->tempo_map().bbt_time (pos, bbt); @@ -816,10 +822,12 @@ EditorRegions::populate_row_end (boost::shared_ptr<Region> region, TreeModel::Ro row[_columns.end] = ""; } else if (used > 1) { row[_columns.end] = _("Mult."); - } else { + } else if (region->last_frame() >= region->first_frame()) { char buf[16]; format_position (region->last_frame(), buf, sizeof (buf)); row[_columns.end] = buf; + } else { + row[_columns.end] = "empty"; } } |