OSDN Git Service

Fix a couple of bugs in win32 shmem name generation:
authorMagnus Hagander <magnus@hagander.net>
Fri, 4 Jul 2008 10:50:18 +0000 (10:50 +0000)
committerMagnus Hagander <magnus@hagander.net>
Fri, 4 Jul 2008 10:50:18 +0000 (10:50 +0000)
* Don't cut off the prefix. With this fix, it's again readable.
* Properly store it in the Global namespace as intended.

src/backend/port/win32_shmem.c

index d00e95d..066e028 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/port/win32_shmem.c,v 1.4 2008/01/01 19:45:51 momjian Exp $
+ *       $PostgreSQL: pgsql/src/backend/port/win32_shmem.c,v 1.5 2008/07/04 10:50:18 mha Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -47,18 +47,17 @@ GetSharedMemName(void)
                elog(FATAL, "could not get size for full pathname of datadir %s: %lu",
                         DataDir, GetLastError());
 
-       retptr = malloc(bufsize + 1 + 18);      /* 1 NULL and 18 for
-                                                                                * Global\PostgreSQL: */
+       retptr = malloc(bufsize + 18);          /* 18 for Global\PostgreSQL: */
        if (retptr == NULL)
                elog(FATAL, "could not allocate memory for shared memory name");
 
        strcpy(retptr, "Global\\PostgreSQL:");
-       r = GetFullPathName(DataDir, bufsize, retptr + 11, NULL);
+       r = GetFullPathName(DataDir, bufsize, retptr + 18, NULL);
        if (r == 0 || r > bufsize)
                elog(FATAL, "could not generate full pathname for datadir %s: %lu",
                         DataDir, GetLastError());
 
-       for (cp = retptr; *cp; cp++)
+       for (cp = retptr + 18; *cp; cp++)
                if (*cp == '\\')
                        *cp = '/';