From 0b9466fce2cf4f8c32b3a9170ca272829aa11e66 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Wed, 4 Dec 2019 19:36:06 -0300 Subject: Offer pnstrdup to frontend code We already had it on the backend. Frontend can also use it now. Discussion: https://postgr.es/m/20191204144021.GA17976@alvherre.pgsql --- src/common/fe_memutils.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/common/fe_memutils.c') diff --git a/src/common/fe_memutils.c b/src/common/fe_memutils.c index ce99b4f4da1..2bc6606b80c 100644 --- a/src/common/fe_memutils.c +++ b/src/common/fe_memutils.c @@ -142,6 +142,33 @@ pstrdup(const char *in) return pg_strdup(in); } +char * +pnstrdup(const char *in, Size size) +{ + char *tmp; + int len; + + if (!in) + { + fprintf(stderr, + _("cannot duplicate null pointer (internal error)\n")); + exit(EXIT_FAILURE); + } + + len = strnlen(in, size); + tmp = malloc(len + 1); + if (tmp == NULL) + { + fprintf(stderr, _("out of memory\n")); + exit(EXIT_FAILURE); + } + + memcpy(tmp, in, len); + tmp[len] = '\0'; + + return tmp; +} + void * repalloc(void *pointer, Size size) { -- cgit v1.2.3