From fbee97664e89b71b91f9185b9f4b114c465b0c69 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Mon, 16 Apr 2001 02:42:01 +0000
Subject: [PATCH] getdatabaseencoding() and PG_encoding_to_char() were being
 sloppy about converting char* strings to type 'name'.  Imagine my surprise
 when 7.1 release coredumped upon start when compiled --enable-multibyte ...

---
 src/backend/utils/init/miscinit.c | 6 +++---
 src/backend/utils/mb/common.c     | 5 +++--
 src/backend/utils/mb/mbutils.c    | 6 ++++--
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c
index a6dffbee103..33b9e11203e 100644
--- a/src/backend/utils/init/miscinit.c
+++ b/src/backend/utils/init/miscinit.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.64 2001/03/22 04:00:00 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.65 2001/04/16 02:42:01 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -168,13 +168,13 @@ SetDataDir(const char *dir)
 Datum
 getdatabaseencoding(PG_FUNCTION_ARGS)
 {
-	PG_RETURN_NAME("SQL_ASCII");
+	return DirectFunctionCall1(namein, CStringGetDatum("SQL_ASCII"));
 }
 
 Datum
 PG_encoding_to_char(PG_FUNCTION_ARGS)
 {
-	PG_RETURN_NAME("SQL_ASCII");
+	return DirectFunctionCall1(namein, CStringGetDatum("SQL_ASCII"));
 }
 
 Datum
diff --git a/src/backend/utils/mb/common.c b/src/backend/utils/mb/common.c
index 1b3fe5fcf94..9c75b6c919e 100644
--- a/src/backend/utils/mb/common.c
+++ b/src/backend/utils/mb/common.c
@@ -2,7 +2,7 @@
  * This file contains some public functions
  * usable for both the backend and the frontend.
  * Tatsuo Ishii
- * $Id: common.c,v 1.12 2001/02/11 01:59:22 ishii Exp $
+ * $Id: common.c,v 1.13 2001/04/16 02:42:01 tgl Exp $
  */
 #include "postgres.h"
 
@@ -91,8 +91,9 @@ Datum
 PG_encoding_to_char(PG_FUNCTION_ARGS)
 {
 	int32		encoding = PG_GETARG_INT32(0);
+	const char *encoding_name = pg_encoding_to_char(encoding);
 
-	PG_RETURN_NAME(pg_encoding_to_char(encoding));
+	return DirectFunctionCall1(namein, CStringGetDatum(encoding_name));
 }
 
 #endif
diff --git a/src/backend/utils/mb/mbutils.c b/src/backend/utils/mb/mbutils.c
index 2abae59d62b..c355bf1e414 100644
--- a/src/backend/utils/mb/mbutils.c
+++ b/src/backend/utils/mb/mbutils.c
@@ -3,7 +3,7 @@
  * client encoding and server internal encoding.
  * (currently mule internal code (mic) is used)
  * Tatsuo Ishii
- * $Id: mbutils.c,v 1.16 2001/03/08 00:24:34 tgl Exp $
+ * $Id: mbutils.c,v 1.17 2001/04/16 02:42:01 tgl Exp $
  */
 #include "postgres.h"
 
@@ -287,5 +287,7 @@ GetDatabaseEncoding()
 Datum
 getdatabaseencoding(PG_FUNCTION_ARGS)
 {
-	PG_RETURN_NAME(pg_encoding_to_char(DatabaseEncoding));
+	const char *encoding_name = pg_encoding_to_char(DatabaseEncoding);
+
+	return DirectFunctionCall1(namein, CStringGetDatum(encoding_name));
 }
-- 
GitLab