aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2021-12-12 11:29:38 +1100
committerNeil <nyamatongwe@gmail.com>2021-12-12 11:29:38 +1100
commita6744e59c9560f499c6dc856ab244ba7753532ce (patch)
treee499e6342c6563ced318adda440e599c7627e75e
parent426e511d60212c869ca40a3e4d053de636192f1d (diff)
downloadscintilla-mirror-a6744e59c9560f499c6dc856ab244ba7753532ce.tar.gz
Fix potential Qt bug with position truncation for ImSurroundingText on huge
documents.
-rw-r--r--qt/ScintillaEditBase/ScintillaEditBase.cpp16
1 files changed, 2 insertions, 14 deletions
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<char,1024> 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<sptr_t>(&textRange));
-
- return sqt->StringFromDocument(buffer.constData());
+ const std::string buffer = sqt->RangeText(paraStart, paraEnd);
+ return sqt->StringFromDocument(buffer.c_str());
}
case Qt::ImCurrentSelection: