diff options
author | Bruce Momjian <bruce@momjian.us> | 1998-09-25 15:51:02 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 1998-09-25 15:51:02 +0000 |
commit | bd041d82bfaec4ba90dfe99ba2de675bd9a7e36f (patch) | |
tree | 1566a95d2dccac55857a03f3cf54b0a9d90dae55 /src/backend/utils/adt/varchar.c | |
parent | d73f73af6e23277b7b5da8b96b151596f0a233d6 (diff) | |
download | postgresql-bd041d82bfaec4ba90dfe99ba2de675bd9a7e36f.tar.gz postgresql-bd041d82bfaec4ba90dfe99ba2de675bd9a7e36f.zip |
multi-byte fix from Tatsuo Ishii
Diffstat (limited to 'src/backend/utils/adt/varchar.c')
-rw-r--r-- | src/backend/utils/adt/varchar.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c index b6b14cb922e..8d2352358a0 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.40 1998/09/25 01:46:21 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.41 1998/09/25 15:51:02 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -147,14 +147,7 @@ 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"); @@ -167,7 +160,13 @@ bpchar(char *s, int32 len) result = (char *) palloc(len); VARSIZE(result) = len; r = VARDATA(result); +#ifdef MULTIBYTE + /* truncate multi-byte string in a way not to break + multi-byte boundary */ + slen = pg_mbcliplen(VARDATA(s), rlen, rlen); +#else slen = VARSIZE(s) - VARHDRSZ; +#endif s = VARDATA(s); #ifdef STRINGDEBUG |