diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index a869e85..bd8db41 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -1034,7 +1034,8 @@ textoverlay_no_len(PG_FUNCTION_ARGS) static text * text_overlay(text *t1, text *t2, int sp, int sl) { - text *result; + text *result1; + text *result2; text *s1; text *s2; int sp_pl_sl; @@ -1056,10 +1057,14 @@ text_overlay(text *t1, text *t2, int sp, int sl) s1 = text_substring(PointerGetDatum(t1), 1, sp - 1, false); s2 = text_substring(PointerGetDatum(t1), sp_pl_sl, -1, true); - result = text_catenate(s1, t2); - result = text_catenate(result, s2); + result1 = text_catenate(s1, t2); + result2 = text_catenate(result1, s2); - return result; + pfree(s1); + pfree(s2); + pfree(result1); + + return result2; } /*