]> granicus.if.org Git - postgresql/commitdiff
multi-byte fix from Tatsuo Ishii
authorBruce Momjian <bruce@momjian.us>
Fri, 25 Sep 1998 15:51:02 +0000 (15:51 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 25 Sep 1998 15:51:02 +0000 (15:51 +0000)
src/backend/utils/adt/varchar.c

index b6b14cb922e8a29de1091236613f5b55c038907a..8d2352358a069ed5f67078f8cd9205eaa0bd460f 100644 (file)
@@ -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