From a91cf275c872477242d8d036004abd521aaa0978 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 10 May 2005 14:13:58 +0500 Subject: [PATCH 1/4] bug#10344: some string function fail for UCS2 substr fix --- mysql-test/r/ctype_ucs.result | 18 ++++++++++++++++++ mysql-test/t/ctype_ucs.test | 10 ++++++++++ strings/ctype-ucs2.c | 2 +- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/ctype_ucs.result b/mysql-test/r/ctype_ucs.result index 3face9b1ba6..5902dd247ce 100644 --- a/mysql-test/r/ctype_ucs.result +++ b/mysql-test/r/ctype_ucs.result @@ -598,6 +598,24 @@ ucs2_bin 00610009 ucs2_bin 0061 ucs2_bin 00610020 drop table t1; +select hex(substr(_ucs2 0x00e400e50068,1)); +hex(substr(_ucs2 0x00e400e50068,1)) +00E400E50068 +select hex(substr(_ucs2 0x00e400e50068,2)); +hex(substr(_ucs2 0x00e400e50068,2)) +00E50068 +select hex(substr(_ucs2 0x00e400e50068,3)); +hex(substr(_ucs2 0x00e400e50068,3)) +0068 +select hex(substr(_ucs2 0x00e400e50068,-1)); +hex(substr(_ucs2 0x00e400e50068,-1)) +0068 +select hex(substr(_ucs2 0x00e400e50068,-2)); +hex(substr(_ucs2 0x00e400e50068,-2)) +00E50068 +select hex(substr(_ucs2 0x00e400e50068,-3)); +hex(substr(_ucs2 0x00e400e50068,-3)) +00E400E50068 SET NAMES latin1; SET collation_connection='ucs2_swedish_ci'; CREATE TABLE t1 (Field1 int(10) default '0'); diff --git a/mysql-test/t/ctype_ucs.test b/mysql-test/t/ctype_ucs.test index db5b13cf1b4..6c72c409463 100644 --- a/mysql-test/t/ctype_ucs.test +++ b/mysql-test/t/ctype_ucs.test @@ -374,6 +374,16 @@ SET NAMES latin1; SET collation_connection='ucs2_bin'; -- source include/ctype_filesort.inc +# +# Bug#10344 Some string functions fail for UCS2 +# +select hex(substr(_ucs2 0x00e400e50068,1)); +select hex(substr(_ucs2 0x00e400e50068,2)); +select hex(substr(_ucs2 0x00e400e50068,3)); +select hex(substr(_ucs2 0x00e400e50068,-1)); +select hex(substr(_ucs2 0x00e400e50068,-2)); +select hex(substr(_ucs2 0x00e400e50068,-3)); + SET NAMES latin1; # # Bug#8235 diff --git a/strings/ctype-ucs2.c b/strings/ctype-ucs2.c index f5d0721fa9b..f12cfe3256e 100644 --- a/strings/ctype-ucs2.c +++ b/strings/ctype-ucs2.c @@ -1261,7 +1261,7 @@ uint my_charpos_ucs2(CHARSET_INFO *cs __attribute__((unused)), const char *e __attribute__((unused)), uint pos) { - return pos*2; + return pos > e - b ? e - b + 2 : pos * 2; } From 05a945ecf42087ad46bd120624af0c356e4041c8 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 10 May 2005 13:53:47 +0200 Subject: [PATCH 2/4] Makefile.am, configure.in: Enable creation of embedded lib when --with-darwin-mwcc configure.in: Enable creation of embedded lib when --with-darwin-mwcc libmysqld/Makefile.am: Enable creation of embedded lib when --with-darwin-mwcc --- configure.in | 3 +++ libmysqld/Makefile.am | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 00ec737e76f..9d524de125a 100644 --- a/configure.in +++ b/configure.in @@ -145,8 +145,11 @@ AC_ARG_WITH(darwin-mwcc, export CC CXX LD AR RANLIB AC_SUBST(AR) AC_SUBST(RANLIB) + with_darwin_mwcc=yes ]) +AM_CONDITIONAL(DARWIN_MWCC, test x$with_darwin_mwcc = xyes) + if test "x${CFLAGS-}" = x ; then cflags_is_set=no else diff --git a/libmysqld/Makefile.am b/libmysqld/Makefile.am index 4cf2c3f67a7..f578e87ae4a 100644 --- a/libmysqld/Makefile.am +++ b/libmysqld/Makefile.am @@ -83,6 +83,9 @@ INC_LIB= $(top_builddir)/regex/libregex.a \ # generate a total libmysqld.a from all library files, libmysqld.a: libmysqld_int.a $(INC_LIB) +if DARWIN_MWCC + mwld -lib -o $@ libmysqld_int.a `ls -1 $(INC_LIB) | sort -u` +else if test "$(host_os)" = "netware" ; \ then \ $(libmysqld_a_AR) libmysqld.a libmysqld_int.a $(INC_LIB) ; \ @@ -104,7 +107,7 @@ libmysqld.a: libmysqld_int.a $(INC_LIB) rm -f tmp/* ; \ $(RANLIB) libmysqld.a ; \ fi - +endif ## XXX: any time the client interface changes, we'll need to bump ## the version info for libmysqld; however, it's possible for the From 5afb72220d81eac038c3345b7e7edd9823b973a9 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 10 May 2005 17:00:54 +0500 Subject: [PATCH 3/4] ctype-big5.c: additional fix for bug@10493, for sjis ctype-cp932.c: additional fix for bug#10493, for cp932 strings/ctype-cp932.c: additional fix for bug#10493, for cp932 strings/ctype-big5.c: additional fix for bug@10493, for sjis --- strings/ctype-big5.c | 2 +- strings/ctype-cp932.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c index 07b30205f89..52886116ff2 100644 --- a/strings/ctype-big5.c +++ b/strings/ctype-big5.c @@ -6285,7 +6285,7 @@ uint my_well_formed_len_big5(CHARSET_INFO *cs __attribute__((unused)), const char *emb= e - 1; /* Last possible end of an MB character */ *error= 0; - while (pos && b < e) + while (pos-- && b < e) { if ((uchar) b[0] < 128) { diff --git a/strings/ctype-cp932.c b/strings/ctype-cp932.c index 0db38afa1f7..d9e3bbd5866 100644 --- a/strings/ctype-cp932.c +++ b/strings/ctype-cp932.c @@ -5417,7 +5417,7 @@ uint my_well_formed_len_cp932(CHARSET_INFO *cs __attribute__((unused)), { const char *b0= b; *error= 0; - while (pos && b < e) + while (pos-- && b < e) { /* Cast to int8 for extra safety. From 4c2265b0aeedceb8407f2e06f4d949a711b4f534 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 10 May 2005 17:51:29 +0200 Subject: [PATCH 4/4] Fix for Ingo BUILD/check-cpu: Set old_flag to pentium --- BUILD/check-cpu | 1 + 1 file changed, 1 insertion(+) diff --git a/BUILD/check-cpu b/BUILD/check-cpu index 3cce4b1ab3d..7619224314b 100755 --- a/BUILD/check-cpu +++ b/BUILD/check-cpu @@ -57,6 +57,7 @@ case "$cpu_family--$model_name" in ;; *Pentium*M*pro*) cpu_flag="pentium-m"; + cpu_flag_old="pentium"; ;; *Athlon*64*) cpu_flag="athlon64";