From 620dbc98cdf34f986b1f6f5164477550926749e8 Mon Sep 17 00:00:00 2001 From: Tatsuo Ishii Date: Thu, 13 Jun 2002 06:19:45 +0000 Subject: [PATCH] make namein multibyte aware --- src/backend/utils/adt/name.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/backend/utils/adt/name.c b/src/backend/utils/adt/name.c index 3777bab939..7092bed875 100644 --- a/src/backend/utils/adt/name.c +++ b/src/backend/utils/adt/name.c @@ -12,7 +12,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.36 2002/06/11 13:40:52 wieck Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.37 2002/06/13 06:19:45 ishii Exp $ * *------------------------------------------------------------------------- */ @@ -23,7 +23,7 @@ #include "utils/array.h" #include "utils/builtins.h" #include "utils/lsyscache.h" - +#include "mb/pg_wchar.h" /***************************************************************************** * USER I/O ROUTINES (none) * @@ -43,16 +43,20 @@ namein(PG_FUNCTION_ARGS) char *s = PG_GETARG_CSTRING(0); NameData *result; int len; + char *ermsg; + + /* veryfy encoding */ + len = strlen(s); + if ((ermsg = pg_verifymbstr(s, len))) + elog(ERROR, "%s", ermsg); + + len = pg_mbcliplen(s, len, NAMEDATALEN-1); result = (NameData *) palloc(NAMEDATALEN); /* always keep it null-padded */ - StrNCpy(NameStr(*result), s, NAMEDATALEN); - len = strlen(NameStr(*result)); - while (len < NAMEDATALEN) - { - *(NameStr(*result) + len) = '\0'; - len++; - } + memset(result, 0, NAMEDATALEN); + memcpy(NameStr(*result), s, len); + PG_RETURN_NAME(result); } -- 2.11.0