]> granicus.if.org Git - postgresql/commitdiff
Call SetLastError(0) before calling the file mapping functions
authorMagnus Hagander <magnus@hagander.net>
Mon, 4 May 2009 08:36:40 +0000 (08:36 +0000)
committerMagnus Hagander <magnus@hagander.net>
Mon, 4 May 2009 08:36:40 +0000 (08:36 +0000)
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

index b3849bea0b76f9e144f1f710e6c2bea676f75ad6..7cb477c6ed07319f490aaf754a6dacac61b53b96 100644 (file)
@@ -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,