From d06a8d054d9d91f759cb8e731aa054138d073369 Mon Sep 17 00:00:00 2001
From: Magnus Hagander <magnus@hagander.net>
Date: Fri, 4 Jul 2008 10:50:18 +0000
Subject: [PATCH] Fix a couple of bugs in win32 shmem name generation: * 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 | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/backend/port/win32_shmem.c b/src/backend/port/win32_shmem.c
index d00e95d16a2..066e0283a11 100644
--- a/src/backend/port/win32_shmem.c
+++ b/src/backend/port/win32_shmem.c
@@ -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 = '/';
 
-- 
GitLab