diff options
author | Bruce Momjian <bruce@momjian.us> | 1998-09-25 01:46:25 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 1998-09-25 01:46:25 +0000 |
commit | f52e7346ea0372eed16e6766e3d7d3d70f8ff952 (patch) | |
tree | 337513d80f04d363df810e01318422bf941833ff /src/backend/utils/adt | |
parent | 31fea9777f4b9daf39bd5a3c2a3180689d55dcb1 (diff) | |
download | postgresql-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.c | 16 |
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"); |