Просмотр исходного кода

Merge pull request #30136 from tg123/master

Windows: return err instead of panic when convert string to utf16
Alexander Morozov 8 лет назад
Родитель
Сommit
d38753303a
1 измененных файлов с 7 добавлено и 1 удалено
  1. 7 1
      daemon/logger/etwlogs/etwlogs_windows.go

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

@@ -148,7 +148,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)