diff --git a/src/backend/port/win32_shmem.c b/src/backend/port/win32_shmem.c
index b3849bea0b76f9e144f1f710e6c2bea676f75ad6..7cb477c6ed07319f490aaf754a6dacac61b53b96 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,