From b6515b3a8abab6dcc56166da825e01e2c083bfc9 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 10 May 2015 07:18:54 +0000 Subject: tracklist: fix inf loop on ENOENT with repeat==1 If a file is missing, we must not respect the repeat option set by the user to avoid infinite looping --- lib/dtas/tracklist.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/dtas/tracklist.rb b/lib/dtas/tracklist.rb index c008204..63fe4ec 100644 --- a/lib/dtas/tracklist.rb +++ b/lib/dtas/tracklist.rb @@ -69,12 +69,13 @@ class DTAS::Tracklist # :nodoc: def advance_track(repeat_ok = true) return if @list.empty? # @repeat == 1 for single track repeat - next_pos = @goto_pos || @pos + (@repeat == 1 ? 0 : 1) + repeat = repeat_ok ? @repeat : false + next_pos = @goto_pos || @pos + (repeat == 1 ? 0 : 1) next_off = @goto_off # nil by default @goto_pos = @goto_off = nil if @list[next_pos] @pos = next_pos - elsif @repeat && repeat_ok + elsif repeat next_pos = @pos = 0 else return -- cgit v1.2.3-24-ge0c7