diff options
author | evgen@moonbone.local <> | 2007-03-10 19:57:18 +0300 |
---|---|---|
committer | evgen@moonbone.local <> | 2007-03-10 19:57:18 +0300 |
commit | f3e56b5adb2208f5db63c8821b9bf44f7568b4af (patch) | |
tree | 10e0a9ef8e36b12a21525b8325f4348ef89c153d /sql/item_strfunc.cc | |
parent | e7a309197bc0f8579004efbf854df872482ae77e (diff) | |
parent | 6f6b9ae3ada5de135228eed2ccc8281c9f989be7 (diff) | |
download | mariadb-git-f3e56b5adb2208f5db63c8821b9bf44f7568b4af.tar.gz |
Merge moonbone.local:/mnt/gentoo64/work/15757-bug-5.0-opt-mysql
into moonbone.local:/mnt/gentoo64/work/25373-bug-5.0-opt-mysql
Diffstat (limited to 'sql/item_strfunc.cc')
-rw-r--r-- | sql/item_strfunc.cc | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 7764b58c69e..6b1921e5bc8 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -1184,11 +1184,10 @@ void Item_func_substr::fix_length_and_dec() if (args[1]->const_item()) { int32 start= (int32) args[1]->val_int(); - start= (int32)((start < 0) ? max_length + start : start - 1); - if (start < 0 || start >= (int32) max_length) - max_length=0; /* purecov: inspected */ + if (start < 0) + max_length= ((uint)(-start) > max_length) ? 0 : (uint)(-start); else - max_length-= (uint) start; + max_length-= min((uint)(start - 1), max_length); } if (arg_count == 3 && args[2]->const_item()) { |