From f489470f8abee19ec0788afad92cf192c132271e Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Mon, 8 Jul 2013 17:28:48 +0300 Subject: [PATCH] Fix Windows build. Was broken by my xloginsert scaling patch. XLogCtl global variable needs to be initialized in each process, as it's not inherited by fork() on Windows. --- src/backend/access/transam/xlog.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index acf0dd1876..c9e3a7af7b 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -5074,7 +5074,8 @@ XLOGShmemInit(void) ControlFile = (ControlFileData *) ShmemInitStruct("Control File", sizeof(ControlFileData), &foundCFile); - allocptr = ShmemInitStruct("XLOG Ctl", XLOGShmemSize(), &foundXLog); + XLogCtl = (XLogCtlData *) + ShmemInitStruct("XLOG Ctl", XLOGShmemSize(), &foundXLog); if (foundCFile || foundXLog) { @@ -5082,7 +5083,6 @@ XLOGShmemInit(void) Assert(foundCFile && foundXLog); return; } - XLogCtl = (XLogCtlData *) allocptr; memset(XLogCtl, 0, sizeof(XLogCtlData)); /* @@ -5090,7 +5090,7 @@ XLOGShmemInit(void) * multiple of the alignment for same, so no extra alignment padding is * needed here. */ - allocptr += sizeof(XLogCtlData); + allocptr = ((char *) XLogCtl) + sizeof(XLogCtlData); XLogCtl->xlblocks = (XLogRecPtr *) allocptr; memset(XLogCtl->xlblocks, 0, sizeof(XLogRecPtr) * XLOGbuffers); allocptr += sizeof(XLogRecPtr) * XLOGbuffers;