mirror of
https://github.com/postgres/postgres.git
synced 2025-11-24 00:23:06 +03:00
Don't call pgwin32_message_to_UTF16() without CurrentMemoryContext.
PostgreSQL running as a Windows service crashed upon calling
write_stderr() before MemoryContextInit(). This fix completes work
started in 5735efee15. Messages this
early contain only ASCII bytes; if we removed the CurrentMemoryContext
requirement, the ensuing conversions would have no effect. Back-patch
to 9.3 (all supported versions).
Takayuki Tsunakawa, reviewed by Michael Paquier.
Discussion: https://postgr.es/m/0A3221C70F24FB45833433255569204D1F80CC73@G01JPEXMBYT05
This commit is contained in:
@@ -1038,8 +1038,10 @@ GetMessageEncoding(void)
|
||||
|
||||
#ifdef WIN32
|
||||
/*
|
||||
* Result is palloc'ed null-terminated utf16 string. The character length
|
||||
* is also passed to utf16len if not null. Returns NULL iff failed.
|
||||
* Convert from MessageEncoding to a palloc'ed, null-terminated utf16
|
||||
* string. The character length is also passed to utf16len if not
|
||||
* null. Returns NULL iff failed. Before MessageEncoding initialization, "str"
|
||||
* should be ASCII-only; this will function as though MessageEncoding is UTF8.
|
||||
*/
|
||||
WCHAR *
|
||||
pgwin32_message_to_UTF16(const char *str, int len, int *utf16len)
|
||||
|
||||
Reference in New Issue
Block a user