summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <guilhem@mysql.com>2005-11-07 16:18:46 +0100
committerunknown <guilhem@mysql.com>2005-11-07 16:18:46 +0100
commit50f48187f2f135b458aee47c561b3afe7df5aa07 (patch)
tree7b70cea20c3b819b996a804ba53efafcba9e279a
parent21447f17e63d84830f6346aca4877db30215c67d (diff)
downloadmariadb-git-50f48187f2f135b458aee47c561b3afe7df5aa07.tar.gz
Fix for BUG#14703 "Valgrind error when inserting 0 into a BIT column (like in type_bit.test)":
test "length" first (otherwise when "length" is 0, the *from invalid access still triggers a Valgrind warning). I wrote to the Valgrind authors in case this is something fixable in Valgrind (normally the decision to issue a warning is based on the simulated CPU condition code, which should not be undefined here). BUILD/compile-pentium64-valgrind-max: putting this script in sync with compile-pentium-valgrind-max, otherwise we didn't have the federated engine compiled in. mysql-test/r/read_only.result: result update sql/field.cc: To avoid a Valgrind warning running the type_bit test: test "length" first (otherwise when "length" is 0, the *from invalid access still triggers a Valgrind warning).
-rwxr-xr-xBUILD/compile-pentium64-valgrind-max4
-rw-r--r--mysql-test/r/read_only.result2
-rw-r--r--sql/field.cc4
3 files changed, 6 insertions, 4 deletions
diff --git a/BUILD/compile-pentium64-valgrind-max b/BUILD/compile-pentium64-valgrind-max
index 2e4ff8e0082..ef932920130 100755
--- a/BUILD/compile-pentium64-valgrind-max
+++ b/BUILD/compile-pentium64-valgrind-max
@@ -3,13 +3,13 @@
path=`dirname $0`
. "$path/SETUP.sh"
-extra_flags="$pentium64_cflags $debug_cflags -USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify -DMYSQL_SERVER_SUFFIX=-valgrind-max"
+extra_flags="$pentium64_cflags $debug_cflags $max_cflags -USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify -DMYSQL_SERVER_SUFFIX=-valgrind-max"
c_warnings="$c_warnings $debug_extra_warnings"
cxx_warnings="$cxx_warnings $debug_extra_warnings"
extra_configs="$pentium_configs $debug_configs"
# We want to test isam when building with valgrind
-extra_configs="$extra_configs --with-berkeley-db --with-innodb --with-isam --with-embedded-server --with-openssl --with-raid --with-ndbcluster"
+extra_configs="$extra_configs $max_leave_isam_configs --with-isam"
. "$path/FINISH.sh"
diff --git a/mysql-test/r/read_only.result b/mysql-test/r/read_only.result
index 09a0861e0c4..55a14bcaec8 100644
--- a/mysql-test/r/read_only.result
+++ b/mysql-test/r/read_only.result
@@ -14,6 +14,8 @@ create table t3 (a int);
ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
insert into t1 values(1);
ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
+update t1 set a=1 where 1=0;
+ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
update t1,t2 set t1.a=t2.a+1 where t1.a=t2.a;
ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement
delete t1,t2 from t1,t2 where t1.a=t2.a;
diff --git a/sql/field.cc b/sql/field.cc
index 03d20b4bfe2..18ef77230f2 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -7931,7 +7931,7 @@ int Field_bit::store(const char *from, uint length, CHARSET_INFO *cs)
{
int delta;
- for (; !*from && length; from++, length--); // skip left 0's
+ for (; length && !*from; from++, length--); // skip left 0's
delta= field_length - length;
if (delta < -1 ||
@@ -8151,7 +8151,7 @@ int Field_bit_as_char::store(const char *from, uint length, CHARSET_INFO *cs)
int delta;
uchar bits= create_length & 7;
- for (; !*from && length; from++, length--); // skip left 0's
+ for (; length && !*from; from++, length--); // skip left 0's
delta= field_length - length;
if (delta < 0 ||