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 | 221471a32eeec9cb5d135993562b6911686c0b3e (patch) | |
tree | a4a62c18f049e1e788e1748b6c56c1864a1cf88d /src/Editor.cxx | |
parent | 9d9bbec07291d768be64a3ea045a4aa656d150ae (diff) | |
download | scintilla-mirror-221471a32eeec9cb5d135993562b6911686c0b3e.tar.gz |
Optimize SCI_GETLINE by avoiding per-character calls.
Diffstat (limited to 'src/Editor.cxx')
-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 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: |