12
12
*
13
13
*
14
14
* IDENTIFICATION
15
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.36 2002/06/11 13:40:52 wieck Exp $
15
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.37 2002/06/13 06:19:45 ishii Exp $
16
16
*
17
17
*-------------------------------------------------------------------------
18
18
*/
23
23
#include "utils/array.h"
24
24
#include "utils/builtins.h"
25
25
#include "utils/lsyscache.h"
26
-
26
+ #include "mb/pg_wchar.h"
27
27
28
28
/*****************************************************************************
29
29
* USER I/O ROUTINES (none) *
@@ -43,16 +43,20 @@ namein(PG_FUNCTION_ARGS)
43
43
char * s = PG_GETARG_CSTRING (0 );
44
44
NameData * result ;
45
45
int len ;
46
+ char * ermsg ;
47
+
48
+ /* veryfy encoding */
49
+ len = strlen (s );
50
+ if ((ermsg = pg_verifymbstr (s , len )))
51
+ elog (ERROR , "%s" , ermsg );
52
+
53
+ len = pg_mbcliplen (s , len , NAMEDATALEN - 1 );
46
54
47
55
result = (NameData * ) palloc (NAMEDATALEN );
48
56
/* always keep it null-padded */
49
- StrNCpy (NameStr (* result ), s , NAMEDATALEN );
50
- len = strlen (NameStr (* result ));
51
- while (len < NAMEDATALEN )
52
- {
53
- * (NameStr (* result ) + len ) = '\0' ;
54
- len ++ ;
55
- }
57
+ memset (result , 0 , NAMEDATALEN );
58
+ memcpy (NameStr (* result ), s , len );
59
+
56
60
PG_RETURN_NAME (result );
57
61
}
58
62
0 commit comments