aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorSimon Rozman <simon@rozman.si>2020-11-09 11:46:17 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2020-11-10 17:35:01 +0100
commitf9c1c9dcdde3ea52e823bb762a7207551c132069 (patch)
treea6ccc49584dd4a5d43c4a490a38ac9d542880c4e
parentinstaller: enable ARM MSI building (diff)
downloadwireguard-windows-f9c1c9dcdde3ea52e823bb762a7207551c132069.tar.xz
wireguard-windows-f9c1c9dcdde3ea52e823bb762a7207551c132069.zip
syntax: trim the text returned by EM_GETTEXTEX
The RichEdit's GETTEXTLENGTHEX returns bigger text length estimate than EM_GETTEXTEX returns. This results in trailing null characters. While CGo variant of the highlighter had a C-natural way of stopping before null-terminator character(s), Go strings don't. Note that documentation says EM_GETTEXTEX returns number of characters including null-terminator, it was observed that RichEdit control's implementation of EM_GETTEXTEX returns number of characters excluding null-terminator. Signed-off-by: Simon Rozman <simon@rozman.si>
-rw-r--r--ui/syntax/syntaxedit.go5
1 files changed, 3 insertions, 2 deletions
diff --git a/ui/syntax/syntaxedit.go b/ui/syntax/syntaxedit.go
index b689d921..a479649a 100644
--- a/ui/syntax/syntaxedit.go
+++ b/ui/syntax/syntaxedit.go
@@ -208,10 +208,11 @@ func (se *SyntaxEdit) highlightText() error {
Cb: msgSize + 1,
}
msg := make([]byte, msgSize+1)
- if win.SendMessage(hWnd, win.EM_GETTEXTEX, uintptr(unsafe.Pointer(&gettextex)), uintptr(unsafe.Pointer(&msg[0]))) <= 0 {
+ msgCount := win.SendMessage(hWnd, win.EM_GETTEXTEX, uintptr(unsafe.Pointer(&gettextex)), uintptr(unsafe.Pointer(&msg[0])))
+ if msgCount < 0 {
return errors.New("Failed to get text")
}
- cfg := strings.Replace(string(msg), "\r", "\n", -1)
+ cfg := strings.Replace(string(msg[:msgCount]), "\r", "\n", -1)
spans := highlightConfig(cfg)
se.evaluateUntunneledBlocking(cfg, spans)