aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/ascii.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/adt/ascii.c')
-rw-r--r--src/backend/utils/adt/ascii.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/backend/utils/adt/ascii.c b/src/backend/utils/adt/ascii.c
index 3bd449dcc04..ce4bb6f0044 100644
--- a/src/backend/utils/adt/ascii.c
+++ b/src/backend/utils/adt/ascii.c
@@ -5,7 +5,7 @@
* Portions Copyright (c) 1999-2007, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/ascii.c,v 1.30 2007/01/05 22:19:40 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/ascii.c,v 1.31 2007/10/13 20:18:41 tgl Exp $
*
*-----------------------------------------------------------------------
*/
@@ -117,7 +117,13 @@ Datum
to_ascii_encname(PG_FUNCTION_ARGS)
{
text *data = PG_GETARG_TEXT_P_COPY(0);
- int enc = pg_char_to_encoding(NameStr(*PG_GETARG_NAME(1)));
+ char *encname = NameStr(*PG_GETARG_NAME(1));
+ int enc = pg_char_to_encoding(encname);
+
+ if (enc < 0)
+ ereport(ERROR,
+ (errcode(ERRCODE_UNDEFINED_OBJECT),
+ errmsg("%s is not a valid encoding name", encname)));
PG_RETURN_TEXT_P(encode_to_ascii(data, enc));
}
@@ -132,6 +138,11 @@ to_ascii_enc(PG_FUNCTION_ARGS)
text *data = PG_GETARG_TEXT_P_COPY(0);
int enc = PG_GETARG_INT32(1);
+ if (!PG_VALID_ENCODING(enc))
+ ereport(ERROR,
+ (errcode(ERRCODE_UNDEFINED_OBJECT),
+ errmsg("%d is not a valid encoding code", enc)));
+
PG_RETURN_TEXT_P(encode_to_ascii(data, enc));
}