diff options
author | Zufu Liu <unknown> | 2019-05-24 08:15:58 +1000 |
---|---|---|
committer | Zufu Liu <unknown> | 2019-05-24 08:15:58 +1000 |
commit | a9d3f1a45955191536f8ac282acb3a889d066bc0 (patch) | |
tree | ddfcdd2e66e3a1d27f03da3d07e5b69146c8b3a0 /src | |
parent | 9ea53d08ad3e3fcba48a608690efd5cd48c32c55 (diff) | |
download | scintilla-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.cxx | 11 |
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: |