aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/Editor.cxx9
-rw-r--r--test/simpleTests.py7
2 files changed, 10 insertions, 6 deletions
diff --git a/src/Editor.cxx b/src/Editor.cxx
index 352a133ae..42b71e3c8 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -5796,11 +5796,10 @@ sptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {
if (wParam == 0)
return 0;
char *ptr = CharPtrFromSPtr(lParam);
- size_t iChar = 0;
- for (; iChar < wParam - 1; iChar++)
- ptr[iChar] = pdoc->CharAt(iChar);
- ptr[iChar] = '\0';
- return iChar;
+ const Sci_Position len = wParam - 1;
+ pdoc->GetCharRange(ptr, 0, len);
+ ptr[len] = '\0';
+ return len;
}
case SCI_SETTEXT: {
diff --git a/test/simpleTests.py b/test/simpleTests.py
index 9a170a2f9..e4512b617 100644
--- a/test/simpleTests.py
+++ b/test/simpleTests.py
@@ -540,9 +540,14 @@ class TestSimple(unittest.TestCase):
def testGetSet(self):
self.ed.SetContents(b"abc")
self.assertEquals(self.ed.TextLength, 3)
- result = ctypes.create_string_buffer(b"\0" * 5)
+ # String buffer containing exactly 5 digits
+ result = ctypes.create_string_buffer(b"12345", 5)
+ self.assertEquals(result.raw, b"12345")
length = self.ed.GetText(4, result)
+ self.assertEquals(length, 3)
self.assertEquals(result.value, b"abc")
+ # GetText has written the 3 bytes of text and a terminating NUL but left the final digit 5
+ self.assertEquals(result.raw, b"abc\x005")
def testAppend(self):
self.ed.SetContents(b"abc")