diff options
author | Neil <nyamatongwe@gmail.com> | 2024-02-15 15:19:01 +1100 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2024-02-15 15:19:01 +1100 |
commit | 1681b7fc9da6d455ab73a96816a47f6ba263017c (patch) | |
tree | f022f07982a81d5ab8effa7400a23c743c9e4ae0 /src/Editor.cxx | |
parent | d18e8a8feb9d6e91f2bb2402166c85a0e1abe8fd (diff) | |
download | scintilla-mirror-1681b7fc9da6d455ab73a96816a47f6ba263017c.tar.gz |
Avoid reinterpret_cast and add const.
Diffstat (limited to 'src/Editor.cxx')
-rw-r--r-- | src/Editor.cxx | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx index b8ed636d3..e6aec550a 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -6128,6 +6128,15 @@ sptr_t Editor::BytesResult(sptr_t lParam, const unsigned char *val, size_t len) return val ? len : 0; } +sptr_t Editor::BytesResult(Scintilla::sptr_t lParam, std::string_view sv) noexcept { + // No NUL termination: sv.length() is number of valid/displayed bytes + if (lParam && !sv.empty()) { + char *ptr = CharPtrFromSPtr(lParam); + memcpy(ptr, sv.data(), sv.length()); + } + return sv.length(); +} + sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) { //Platform::DebugPrintf("S start wnd proc %d %d %d\n",iMessage, wParam, lParam); @@ -6374,8 +6383,8 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) { break; case Message::GetTargetText: { - std::string text = RangeText(targetRange.start.Position(), targetRange.end.Position()); - return BytesResult(lParam, reinterpret_cast<const unsigned char *>(text.c_str()), text.length()); + const std::string text = RangeText(targetRange.start.Position(), targetRange.end.Position()); + return BytesResult(lParam, text); } case Message::ReplaceTarget: @@ -6617,8 +6626,8 @@ sptr_t Editor::WndProc(Message iMessage, uptr_t wParam, sptr_t lParam) { return pdoc->UndoActionPosition(static_cast<int>(wParam)); case Message::GetUndoActionText: { - std::string_view text = pdoc->UndoActionText(static_cast<int>(wParam)); - return BytesResult(lParam, reinterpret_cast<const unsigned char *>(text.data()), text.length()); + const std::string_view text = pdoc->UndoActionText(static_cast<int>(wParam)); + return BytesResult(lParam, text); } case Message::PushUndoActionType: |