From ca6c0ac4d3da974c11866388989071f5ce821b5d Mon Sep 17 00:00:00 2001
From: Magnus Hagander <magnus@hagander.net>
Date: Mon, 4 May 2009 08:36:40 +0000
Subject: [PATCH] Call SetLastError(0) before calling the file mapping
 functions to make sure that the error code is reset, as a precaution in case
 the API doesn't properly reset it on success. This could be necessary, since
 we check the error value even if the function doesn't fail for specific
 success cases.

---
 src/backend/port/win32_shmem.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/backend/port/win32_shmem.c b/src/backend/port/win32_shmem.c
index b3849bea0b7..7cb477c6ed0 100644
--- a/src/backend/port/win32_shmem.c
+++ b/src/backend/port/win32_shmem.c
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/port/win32_shmem.c,v 1.7 2009/01/01 17:23:46 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/port/win32_shmem.c,v 1.8 2009/05/04 08:36:40 mha Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -131,6 +131,9 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port)
 
 	UsedShmemSegAddr = NULL;
 
+	/* In case CreateFileMapping() doesn't set the error code to 0 on success */
+	SetLastError(0);
+
 	hmap = CreateFileMapping((HANDLE) 0xFFFFFFFF,		/* Use the pagefile */
 							 NULL,		/* Default security attrs */
 							 PAGE_READWRITE,	/* Memory is Read/Write */
@@ -160,6 +163,9 @@ PGSharedMemoryCreate(Size size, bool makePrivate, int port)
 
 		Sleep(1000);
 
+		/* In case CreateFileMapping() doesn't set the error code to 0 on success */
+		SetLastError(0);
+
 		hmap = CreateFileMapping((HANDLE) 0xFFFFFFFF, NULL, PAGE_READWRITE, 0L, (DWORD) size, szShareMem);
 		if (!hmap)
 			ereport(FATAL,
-- 
GitLab