From 0b06e64c3f2174c1e305e15beef63ebc126252a5 Mon Sep 17 00:00:00 2001 From: Gokhan Gulbiz Date: Tue, 21 Mar 2023 09:58:31 +0300 Subject: [PATCH] Use stringinfo for escaping/unescaping --- src/backend/distributed/utils/attribute.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/backend/distributed/utils/attribute.c b/src/backend/distributed/utils/attribute.c index 35fd67333..ebf073d19 100644 --- a/src/backend/distributed/utils/attribute.c +++ b/src/backend/distributed/utils/attribute.c @@ -28,6 +28,7 @@ #include "utils/json.h" #include "distributed/utils/attribute.h" #include "common/base64.h" +#include "miscadmin.h" #include @@ -757,31 +758,28 @@ static char * EscapeCommentChars(const char *str) { int originalStringLength = strlen(str); - char *escapedString = (char *) palloc0((originalStringLength * 2 + 1) * sizeof(char)); - int escapedStringIndex = 0; + StringInfo escapedString = makeStringInfo(); for (int originalStringIndex = 0; originalStringIndex < originalStringLength; originalStringIndex++) { if (str[originalStringIndex] == '*' || str[originalStringIndex] == '/') { - escapedString[escapedStringIndex++] = '\\'; + appendStringInfoChar(escapedString, '\\'); } - escapedString[escapedStringIndex++] = str[originalStringIndex]; - } - escapedString[escapedStringIndex] = '\0'; - return escapedString; + appendStringInfoChar(escapedString, str[originalStringIndex]); + } + + return escapedString->data; } - /* UnescapeCommentChars removes the backslash that precedes '*' or '/' in the input string. */ static char * UnescapeCommentChars(const char *str) { int originalStringLength = strlen(str); - char *unescapedString = (char *) palloc0((originalStringLength + 1) * sizeof(char)); - int unescapedStringIndex = 0; + StringInfo unescapedString = makeStringInfo(); for (int originalStringindex = 0; originalStringindex < originalStringLength; originalStringindex++) @@ -793,9 +791,8 @@ UnescapeCommentChars(const char *str) { originalStringindex++; } - unescapedString[unescapedStringIndex++] = str[originalStringindex]; + appendStringInfoChar(unescapedString, str[originalStringindex]); } - unescapedString[unescapedStringIndex] = '\0'; - return unescapedString; + return unescapedString->data; }