diff --git a/src/util/tagged_string.cpp b/src/util/tagged_string.cpp
index 3303314e..66f35530 100644
--- a/src/util/tagged_string.cpp
+++ b/src/util/tagged_string.cpp
@@ -338,11 +338,12 @@ void cursor_to_index_range(const String& str, size_t cursor, size_t& start, size
size_t cursor_to_index(const String& str, size_t cursor, Movement dir) {
size_t start, end;
cursor_to_index_range(str, cursor, start, end);
+ assert(end <= str.size()+1);
if (dir == MOVE_MID) {
// find the middle between start and end
// if the string in between contains a pair "" or "" returns the middle
// otherwise returns start
- for (size_t i = start ; i < end ; ) {
+ for (size_t i = start ; i < end && i < str.size() ; ) {
if (str.GetChar(i) == _('<')) {
String tag1 = tag_at(str, i);
i = skip_tag(str, i);