aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2024-02-15 15:19:01 +1100
committerNeil <nyamatongwe@gmail.com>2024-02-15 15:19:01 +1100
commit1681b7fc9da6d455ab73a96816a47f6ba263017c (patch)
treef022f07982a81d5ab8effa7400a23c743c9e4ae0 /src
parentd18e8a8feb9d6e91f2bb2402166c85a0e1abe8fd (diff)
downloadscintilla-mirror-1681b7fc9da6d455ab73a96816a47f6ba263017c.tar.gz
Avoid reinterpret_cast and add const.
Diffstat (limited to 'src')
-rw-r--r--src/Editor.cxx17
-rw-r--r--src/Editor.h1
2 files changed, 14 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:
diff --git a/src/Editor.h b/src/Editor.h
index b1b426dff..dfc25d72d 100644
--- a/src/Editor.h
+++ b/src/Editor.h
@@ -668,6 +668,7 @@ protected: // ScintillaBase subclass needs access to much of Editor
static Scintilla::sptr_t StringResult(Scintilla::sptr_t lParam, const char *val) noexcept;
static Scintilla::sptr_t BytesResult(Scintilla::sptr_t lParam, const unsigned char *val, size_t len) noexcept;
+ static Scintilla::sptr_t BytesResult(Scintilla::sptr_t lParam, std::string_view sv) noexcept;
// Set a variable controlling appearance to a value and invalidates the display
// if a change was made. Avoids extra text and the possibility of mistyping.