summaryrefslogtreecommitdiff
path: root/src/buffer.cc
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2011-10-19 14:25:13 +0000
committerMaxime Coste <frrrwww@gmail.com>2011-10-19 14:25:13 +0000
commitd7f934b7ca1b37dd5710e0b058a6ac1f4fe1c9d9 (patch)
treeb7da948bd84207b3911214d2d417572544cf064c /src/buffer.cc
parent7e2f7f6715909dcaf4d826a0ab558dbb2d1db887 (diff)
Buffer: iterator_at prevents getting iterators on end of line
Diffstat (limited to 'src/buffer.cc')
-rw-r--r--src/buffer.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/buffer.cc b/src/buffer.cc
index 324ecd66..cf60fa84 100644
--- a/src/buffer.cc
+++ b/src/buffer.cc
@@ -57,8 +57,9 @@ BufferIterator Buffer::iterator_at(const BufferCoord& line_and_column) const
if (m_lines.empty())
return begin();
- BufferPos line = Kakoune::clamp<int>(0, m_lines.size() - 1, line_and_column.line);
- BufferPos column = Kakoune::clamp<int>(0, line_length(line), line_and_column.column);
+ BufferPos line = Kakoune::clamp<int>(0, m_lines.size() - 1, line_and_column.line);
+ int col_max = std::max(0, line_length(line) - 1);
+ BufferPos column = Kakoune::clamp<int>(0, col_max, line_and_column.column);
return BufferIterator(*this, m_lines[line] + column);
}