api: return empty array when slicing out of bounds.

This commit is contained in:
Nick Hynes 2015-06-16 20:04:43 -04:00 committed by Justin M. Keyes
parent 5fdaac45a6
commit 90b4276d67

View File

@ -108,7 +108,7 @@ ArrayOf(String) buffer_get_line_slice(Buffer buffer,
Array rv = ARRAY_DICT_INIT;
buf_T *buf = find_buffer_by_handle(buffer, err);
if (!buf) {
if (!buf || !inbounds(buf, start)) {
return rv;
}
@ -550,3 +550,10 @@ static int64_t normalize_index(buf_T *buf, int64_t index)
index = index > buf->b_ml.ml_line_count ? buf->b_ml.ml_line_count : index;
return index;
}
// Returns true if the 0-indexed `index` is within the 1-indexed buffer bounds.
static bool inbounds(buf_T *buf, int64_t index)
{
linenr_T nlines = buf->b_ml.ml_line_count;
return index >= -nlines && index < nlines;
}