From a9742f123c25c7bc5ce0c18e188dba790da4fbe1 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Wed, 9 Jan 2008 23:43:54 +0000
Subject: [PATCH] Remove incorrect (and ill-advised anyway) pfree's in
 pg_convert_from and pg_convert_to.  Per bug #3866 from Andrew Gilligan.

---
 src/backend/utils/mb/mbutils.c | 24 +++++++++---------------
 1 file changed, 9 insertions(+), 15 deletions(-)

diff --git a/src/backend/utils/mb/mbutils.c b/src/backend/utils/mb/mbutils.c
index 3cbd05f41a0..4d8043dfc83 100644
--- a/src/backend/utils/mb/mbutils.c
+++ b/src/backend/utils/mb/mbutils.c
@@ -4,7 +4,7 @@
  * (currently mule internal code (mic) is used)
  * Tatsuo Ishii
  *
- * $PostgreSQL: pgsql/src/backend/utils/mb/mbutils.c,v 1.68 2007/11/15 21:14:40 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/mb/mbutils.c,v 1.69 2008/01/09 23:43:54 tgl Exp $
  */
 #include "postgres.h"
 
@@ -301,8 +301,8 @@ pg_convert_to(PG_FUNCTION_ARGS)
 {
 	Datum		string = PG_GETARG_DATUM(0);
 	Datum		dest_encoding_name = PG_GETARG_DATUM(1);
-	Datum		src_encoding_name = DirectFunctionCall1(
-							namein, CStringGetDatum(DatabaseEncoding->name));
+	Datum		src_encoding_name = DirectFunctionCall1(namein,
+									CStringGetDatum(DatabaseEncoding->name));
 	Datum		result;
 
 	/*
@@ -310,11 +310,8 @@ pg_convert_to(PG_FUNCTION_ARGS)
 	 * text argument here, relying on the fact that they are both in fact
 	 * varlena types, and thus structurally identical.
 	 */
-	result = DirectFunctionCall3(
-				  pg_convert, string, src_encoding_name, dest_encoding_name);
-
-	/* free memory allocated by namein */
-	pfree((void *) src_encoding_name);
+	result = DirectFunctionCall3(pg_convert, string,
+								 src_encoding_name, dest_encoding_name);
 
 	PG_RETURN_BYTEA_P(result);
 }
@@ -329,15 +326,12 @@ pg_convert_from(PG_FUNCTION_ARGS)
 {
 	Datum		string = PG_GETARG_DATUM(0);
 	Datum		src_encoding_name = PG_GETARG_DATUM(1);
-	Datum		dest_encoding_name = DirectFunctionCall1(
-							namein, CStringGetDatum(DatabaseEncoding->name));
+	Datum		dest_encoding_name = DirectFunctionCall1(namein,
+									CStringGetDatum(DatabaseEncoding->name));
 	Datum		result;
 
-	result = DirectFunctionCall3(
-				  pg_convert, string, src_encoding_name, dest_encoding_name);
-
-	/* free memory allocated by namein */
-	pfree((void *) src_encoding_name);
+	result = DirectFunctionCall3(pg_convert, string,
+								 src_encoding_name, dest_encoding_name);
 
 	/*
 	 * pg_convert returns a bytea, which we in turn return as text, relying on
-- 
GitLab