From 7bb6e94725c2d5c74fd464a2c120be2a5eb81e15 Mon Sep 17 00:00:00 2001 From: Waqar Ahmed Date: Tue, 16 Nov 2021 10:36:03 +0500 Subject: [PATCH] Fix Screen::moveImage overwriting content The previous version didn't care about partial images i.e., the a few lines of the full image. This lead to broken behaviour in apps like VI. --- src/Screen.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Screen.cpp b/src/Screen.cpp index 43b24475..00a6d24b 100644 --- a/src/Screen.cpp +++ b/src/Screen.cpp @@ -1164,8 +1164,8 @@ void Screen::moveImage(int dest, int sourceBegin, int sourceEnd) const int destY = dest / _columns; const int srcY = sourceBegin / _columns; if (dest < sourceBegin) { - std::rotate(_screenLines.begin() + destY, _screenLines.begin() + srcY, _screenLines.end()); - std::rotate(_lineProperties.begin() + destY, _lineProperties.begin() + srcY, _lineProperties.end()); + std::rotate(_screenLines.begin() + destY, _screenLines.begin() + srcY, _screenLines.begin() + srcY + lines); + std::rotate(_lineProperties.begin() + destY, _lineProperties.begin() + srcY, _lineProperties.begin() + srcY + lines); } else { for (int i = lines; i >= 0; --i) { _screenLines[destY + i] = std::move(_screenLines[srcY + i]);