From 5ad4b3c7835fe9e0f284702ec7b827c27770854e Mon Sep 17 00:00:00 2001 From: Jacob Champion Date: Mon, 3 May 2021 15:38:26 -0700 Subject: [PATCH 3/7] common/jsonapi: always palloc the error strings ...so that client code can pfree() to avoid memory leaks in long-running operations. --- src/common/jsonapi.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/common/jsonapi.c b/src/common/jsonapi.c index 6b6001b118..f7304f584f 100644 --- a/src/common/jsonapi.c +++ b/src/common/jsonapi.c @@ -1089,7 +1089,7 @@ json_errdetail(JsonParseErrorType error, JsonLexContext *lex) return psprintf(_("Expected JSON value, but found \"%s\"."), extract_token(lex)); case JSON_EXPECTED_MORE: - return _("The input string ended unexpectedly."); + return pstrdup(_("The input string ended unexpectedly.")); case JSON_EXPECTED_OBJECT_FIRST: return psprintf(_("Expected string or \"}\", but found \"%s\"."), extract_token(lex)); @@ -1103,16 +1103,16 @@ json_errdetail(JsonParseErrorType error, JsonLexContext *lex) return psprintf(_("Token \"%s\" is invalid."), extract_token(lex)); case JSON_UNICODE_CODE_POINT_ZERO: - return _("\\u0000 cannot be converted to text."); + return pstrdup(_("\\u0000 cannot be converted to text.")); case JSON_UNICODE_ESCAPE_FORMAT: - return _("\"\\u\" must be followed by four hexadecimal digits."); + return pstrdup(_("\"\\u\" must be followed by four hexadecimal digits.")); case JSON_UNICODE_HIGH_ESCAPE: /* note: this case is only reachable in frontend not backend */ - return _("Unicode escape values cannot be used for code point values above 007F when the encoding is not UTF8."); + return pstrdup(_("Unicode escape values cannot be used for code point values above 007F when the encoding is not UTF8.")); case JSON_UNICODE_HIGH_SURROGATE: - return _("Unicode high surrogate must not follow a high surrogate."); + return pstrdup(_("Unicode high surrogate must not follow a high surrogate.")); case JSON_UNICODE_LOW_SURROGATE: - return _("Unicode low surrogate must follow a high surrogate."); + return pstrdup(_("Unicode low surrogate must follow a high surrogate.")); } /* -- 2.25.1