summaryrefslogtreecommitdiff
path: root/sql/item_strfunc.cc
diff options
context:
space:
mode:
authorunknown <evgen@moonbone.local>2007-03-10 19:57:18 +0300
committerunknown <evgen@moonbone.local>2007-03-10 19:57:18 +0300
commit2f774b479b91cb279c42ce7f191a2ce4993f1890 (patch)
tree10e0a9ef8e36b12a21525b8325f4348ef89c153d /sql/item_strfunc.cc
parentc0a0543545bc7b3e2ce9aec787452e7bd619f3d3 (diff)
parent816ea8a379f38d4b38e46d61d23577733a222850 (diff)
downloadmariadb-git-2f774b479b91cb279c42ce7f191a2ce4993f1890.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 sql/item_strfunc.cc: Auto merged mysql-test/r/func_str.result: SCCS merged mysql-test/t/func_str.test: SCCS merged
Diffstat (limited to 'sql/item_strfunc.cc')
-rw-r--r--sql/item_strfunc.cc7
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())
{