浏览代码

return err instead of panic when convert string to utf16

Signed-off-by: Boshi Lian <farmer1992@gmail.com>
Boshi Lian 8 年之前
父节点
当前提交
1c770c6d8c
共有 1 个文件被更改,包括 7 次插入1 次删除
  1. 7 1
      daemon/logger/etwlogs/etwlogs_windows.go

+ 7 - 1
daemon/logger/etwlogs/etwlogs_windows.go

@@ -146,7 +146,13 @@ func callEventRegister() error {
 }
 
 func callEventWriteString(message string) error {
-	ret, _, _ := procEventWriteString.Call(uintptr(providerHandle), 0, 0, uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(message))))
+	utf16message, err := syscall.UTF16FromString(message)
+
+	if err != nil {
+		return err
+	}
+
+	ret, _, _ := procEventWriteString.Call(uintptr(providerHandle), 0, 0, uintptr(unsafe.Pointer(&utf16message[0])))
 	if ret != win32CallSuccess {
 		errorMessage := fmt.Sprintf("ETWLogs provider failed to log message. Error: %d", ret)
 		logrus.Error(errorMessage)