aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Editor.cxx
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
commit221471a32eeec9cb5d135993562b6911686c0b3e (patch)
treea4a62c18f049e1e788e1748b6c56c1864a1cf88d /src/Editor.cxx
parent9d9bbec07291d768be64a3ea045a4aa656d150ae (diff)
downloadscintilla-mirror-221471a32eeec9cb5d135993562b6911686c0b3e.tar.gz
Optimize SCI_GETLINE by avoiding per-character calls.
Diffstat (limited to 'src/Editor.cxx')
-rw-r--r--src/Editor.cxx11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx
index cb6a8a183..e8bfb2cc1 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -5887,15 +5887,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: