diff --git a/src/calibre/utils/windows/common.h b/src/calibre/utils/windows/common.h index dc3627b090..ee903c805b 100644 --- a/src/calibre/utils/windows/common.h +++ b/src/calibre/utils/windows/common.h @@ -8,7 +8,7 @@ #define PY_SSIZE_T_CLEAN #define UNICODE #define _UNICODE -#include +#include #include #include #include "../cpp_binding.h" diff --git a/src/calibre/utils/windows/winspeech.cpp b/src/calibre/utils/windows/winspeech.cpp index b643bd0489..64e89195be 100644 --- a/src/calibre/utils/windows/winspeech.cpp +++ b/src/calibre/utils/windows/winspeech.cpp @@ -945,7 +945,6 @@ parse_cued_text(std::string_view src, Marks &marks, std::wstring_view dest) { } } } - *((wchar_t*)dest.data() + dest_pos) = 0; // ensure NULL termination return dest.substr(0, dest_pos); } @@ -985,7 +984,6 @@ handle_speak(id_type cmd_id, std::vector &parts) { text = parse_cued_text(src, marks, dest); } else { size_t n = decode_into(src, dest); - buf[n] = 0; // ensure null termination text = std::wstring_view(buf.data(), n); } } else { @@ -994,8 +992,8 @@ handle_speak(id_type cmd_id, std::vector &parts) { buf.reserve(address.size() + 1); text = std::wstring_view(buf.data(), address.size()); address.copy(buf.data(), address.size()); - buf[address.size()] = 0; // null terminate } + *((wchar_t*)text.data() + text.size()) = 0; // ensure NULL termination sx.speak(cmd_id, text, is_ssml, is_cued, std::move(buf), std::move(marks)); }