diff --git a/src/buffer.c b/src/buffer.c index 91bee637b..9037dd3fe 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -88,6 +88,11 @@ int buffer_insert_line2(struct buffer *b, char *pos, const char *str, int len) if (bi_end(b) + delta >= b->data + b->size) return 0; /* no space left */ + if (buffer_not_empty(b) && + bi_end(b) + delta > bo_ptr(b) && + bo_ptr(b) >= bi_end(b)) + return 0; /* no space left before wrapping data */ + /* first, protect the end of the buffer */ memmove(pos + delta, pos, bi_end(b) - pos);