From 4a8d573cda5cacf30da61e14aaeda8bbc3057d9d Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 28 Jun 2008 16:45:22 +0000
Subject: [PATCH] If pnstrdup is going to be promoted to a generally available
 function, it ought to conform to the rest of palloc.h in using Size for
 sizes.

---
 src/backend/utils/mmgr/mcxt.c | 29 ++++++++++++++++-------------
 src/include/utils/palloc.h    |  6 +++---
 2 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/src/backend/utils/mmgr/mcxt.c b/src/backend/utils/mmgr/mcxt.c
index daeaaaf1871..5b453b1e876 100644
--- a/src/backend/utils/mmgr/mcxt.c
+++ b/src/backend/utils/mmgr/mcxt.c
@@ -14,7 +14,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/mmgr/mcxt.c,v 1.64 2008/06/18 18:42:54 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/mmgr/mcxt.c,v 1.65 2008/06/28 16:45:22 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -624,18 +624,6 @@ repalloc(void *pointer, Size size)
 												 pointer, size);
 }
 
-/* Like pstrdup(), but append null byte */
-char *
-pnstrdup(const char *in, int len)
-{
-	char	   *out = palloc(len + 1);
-
-	memcpy(out, in, len);
-	out[len] = '\0';
-	return out;
-}
-
-
 /*
  * MemoryContextSwitchTo
  *		Returns the current context; installs the given context.
@@ -676,6 +664,21 @@ MemoryContextStrdup(MemoryContext context, const char *string)
 	return nstr;
 }
 
+/*
+ * pnstrdup
+ *		Like pstrdup(), but append null byte to a
+ *		not-necessarily-null-terminated input string.
+ */
+char *
+pnstrdup(const char *in, Size len)
+{
+	char	   *out = palloc(len + 1);
+
+	memcpy(out, in, len);
+	out[len] = '\0';
+	return out;
+}
+
 
 #if defined(WIN32) || defined(__CYGWIN__)
 /*
diff --git a/src/include/utils/palloc.h b/src/include/utils/palloc.h
index 7e3c085a7aa..d3554f3c168 100644
--- a/src/include/utils/palloc.h
+++ b/src/include/utils/palloc.h
@@ -21,7 +21,7 @@
  * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/utils/palloc.h,v 1.39 2008/06/18 18:42:54 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/utils/palloc.h,v 1.40 2008/06/28 16:45:22 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -70,8 +70,6 @@ extern void pfree(void *pointer);
 
 extern void *repalloc(void *pointer, Size size);
 
-extern char *pnstrdup(const char *in, int len);
-
 /*
  * MemoryContextSwitchTo can't be a macro in standard C compilers.
  * But we can make it an inline function when using GCC.
@@ -99,6 +97,8 @@ extern char *MemoryContextStrdup(MemoryContext context, const char *string);
 
 #define pstrdup(str)  MemoryContextStrdup(CurrentMemoryContext, (str))
 
+extern char *pnstrdup(const char *in, Size len);
+
 #if defined(WIN32) || defined(__CYGWIN__)
 extern void *pgport_palloc(Size sz);
 extern char *pgport_pstrdup(const char *str);
-- 
GitLab