summaryrefslogtreecommitdiff
path: root/src/backend/utils/mb/mbutils.c
diff options
context:
space:
mode:
authorNoah Misch <noah@leadboat.com>2017-11-12 13:03:15 -0800
committerNoah Misch <noah@leadboat.com>2017-11-12 13:03:28 -0800
commitd74db7a35c8dd18342fdf403375af55e2561e61e (patch)
tree328fefa1d30cdb9fb8e92295e986994239b6ab62 /src/backend/utils/mb/mbutils.c
parentef73c355f146844838af650d310a45e0f93d408c (diff)
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 5735efee15540765315aa8c1a230575e756037f7. 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
Diffstat (limited to 'src/backend/utils/mb/mbutils.c')
-rw-r--r--src/backend/utils/mb/mbutils.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/backend/utils/mb/mbutils.c b/src/backend/utils/mb/mbutils.c
index 2a8271ab072..2e792b4f189 100644
--- a/src/backend/utils/mb/mbutils.c
+++ b/src/backend/utils/mb/mbutils.c
@@ -1049,8 +1049,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)