aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorZufu Liu <unknown>2019-05-24 08:15:58 +1000
committerZufu Liu <unknown>2019-05-24 08:15:58 +1000
commita9d3f1a45955191536f8ac282acb3a889d066bc0 (patch)
treeddfcdd2e66e3a1d27f03da3d07e5b69146c8b3a0 /src
parent9ea53d08ad3e3fcba48a608690efd5cd48c32c55 (diff)
downloadscintilla-mirror-a9d3f1a45955191536f8ac282acb3a889d066bc0.tar.gz
Backport: Optimize SCI_GETLINE by avoiding per-character calls.
Backport of changeset 7503:56ccae81df17.
Diffstat (limited to 'src')
-rw-r--r--src/Editor.cxx11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx
index 3d76952c1..e024804bd 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -5883,15 +5883,14 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
pdoc->LineStart(static_cast<Sci::Line>(wParam));
const Sci::Position lineEnd =
pdoc->LineStart(static_cast<Sci::Line>(wParam + 1));
+ // not NUL terminated
+ const Sci::Position len = lineEnd - lineStart;
if (lParam == 0) {
- return lineEnd - lineStart;
+ return len;
}
char *ptr = CharPtrFromSPtr(lParam);
- Sci::Position iPlace = 0;
- for (Sci::Position iChar = lineStart; iChar < lineEnd; iChar++) {
- ptr[iPlace++] = pdoc->CharAt(iChar);
- }
- return iPlace;
+ pdoc->GetCharRange(ptr, lineStart, len);
+ return len;
}
case SCI_GETLINECOUNT: