aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1998-09-25 01:46:25 +0000
committerBruce Momjian <bruce@momjian.us>1998-09-25 01:46:25 +0000
commitf52e7346ea0372eed16e6766e3d7d3d70f8ff952 (patch)
tree337513d80f04d363df810e01318422bf941833ff /src/backend/utils/adt
parent31fea9777f4b9daf39bd5a3c2a3180689d55dcb1 (diff)
downloadpostgresql-f52e7346ea0372eed16e6766e3d7d3d70f8ff952.tar.gz
postgresql-f52e7346ea0372eed16e6766e3d7d3d70f8ff952.zip
MB patches from Tatsuo Ishii
Diffstat (limited to 'src/backend/utils/adt')
-rw-r--r--src/backend/utils/adt/varchar.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c
index 6f8f82d8406..b6b14cb922e 100644
--- a/src/backend/utils/adt/varchar.c
+++ b/src/backend/utils/adt/varchar.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.39 1998/09/01 04:32:53 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.40 1998/09/25 01:46:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -147,7 +147,14 @@ bpchar(char *s, int32 len)
if ((len == -1) || (len == VARSIZE(s)))
return s;
+#ifdef MULTIBYTE
+ /* truncate multi-byte string in a way not to break
+ multi-byte boundary */
+ rlen = pg_mbcliplen(VARDATA(s), len - VARHDRSZ, len - VARHDRSZ);
+ len = rlen + VARHDRSZ;
+#else
rlen = len - VARHDRSZ;
+#endif
if (rlen > 4096)
elog(ERROR, "bpchar: length of char() must be less than 4096");
@@ -367,7 +374,14 @@ varchar(char *s, int32 slen)
/* only reach here if we need to truncate string... */
+#ifdef MULTIBYTE
+ /* truncate multi-byte string in a way not to break
+ multi-byte boundary */
+ len = pg_mbcliplen(VARDATA(s), slen - VARHDRSZ, slen - VARHDRSZ);
+ slen = len + VARHDRSZ;
+#else
len = slen - VARHDRSZ;
+#endif
if (len > 4096)
elog(ERROR, "varchar: length of varchar() must be less than 4096");