diff --git a/src/backend/utils/mmgr/mcxt.c b/src/backend/utils/mmgr/mcxt.c index daeaaaf1871bfb3f8e04770b837f8edb5997bec6..5b453b1e8762881a542353e2019b3988d806bed9 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 7e3c085a7aadac6202d368273513994ba433754a..d3554f3c1681ad4183c06624f59077e301e4a73c 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);