From a6744e59c9560f499c6dc856ab244ba7753532ce Mon Sep 17 00:00:00 2001 From: Neil Date: Sun, 12 Dec 2021 11:29:38 +1100 Subject: Fix potential Qt bug with position truncation for ImSurroundingText on huge documents. --- qt/ScintillaEditBase/ScintillaEditBase.cpp | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) (limited to 'qt/ScintillaEditBase/ScintillaEditBase.cpp') diff --git a/qt/ScintillaEditBase/ScintillaEditBase.cpp b/qt/ScintillaEditBase/ScintillaEditBase.cpp index 553be2dbb..7e3065812 100644 --- a/qt/ScintillaEditBase/ScintillaEditBase.cpp +++ b/qt/ScintillaEditBase/ScintillaEditBase.cpp @@ -669,20 +669,8 @@ QVariant ScintillaEditBase::inputMethodQuery(Qt::InputMethodQuery query) const { const Scintilla::Position paraStart = sqt->pdoc->ParaUp(pos); const Scintilla::Position paraEnd = sqt->pdoc->ParaDown(pos); - QVarLengthArray buffer(paraEnd - paraStart + 1); - - // This is limited to first 2GB of a document on Windows - Sci_CharacterRange charRange{}; - charRange.cpMin = paraStart; - charRange.cpMax = paraEnd; - - Sci_TextRange textRange{}; - textRange.chrg = charRange; - textRange.lpstrText = buffer.data(); - - send(SCI_GETTEXTRANGE, 0, reinterpret_cast(&textRange)); - - return sqt->StringFromDocument(buffer.constData()); + const std::string buffer = sqt->RangeText(paraStart, paraEnd); + return sqt->StringFromDocument(buffer.c_str()); } case Qt::ImCurrentSelection: -- cgit v1.2.3