diff --git a/src/audio_timing_dialogue.cpp b/src/audio_timing_dialogue.cpp
index 2b11fb1ac35798f217a867099602d4a582a8f7bb..f3fb95ab13a59847d218c7075cfe63085fa7d5d2 100644
--- a/src/audio_timing_dialogue.cpp
+++ b/src/audio_timing_dialogue.cpp
@@ -743,10 +743,10 @@ void AudioTimingControllerDialogue::RegenerateInactiveLines()
 	case 2: // Previous and next lines
 		if (AssDialogue *line = context->selectionController->GetActiveLine())
 		{
-			entryIter current_line = context->ass->Line.iterator_to(*line);
-			if (current_line == context->ass->Line.end())
+			bool in_list = !EntryList::node_algorithms::inited(EntryList::value_traits::to_node_ptr(*line));
+			if (!in_list)
 				break;
-
+			entryIter current_line = context->ass->Line.iterator_to(*line);
 			entryIter prev = current_line;
 			while (--prev != context->ass->Line.begin() && !predicate(*prev)) ;
 			if (prev != context->ass->Line.begin())