summaryrefslogtreecommitdiff
path: root/sql/item_strfunc.cc
diff options
context:
space:
mode:
authorunknown <gluh@gluh.mysql.r18.ru>2005-03-07 18:56:18 +0300
committerunknown <gluh@gluh.mysql.r18.ru>2005-03-07 18:56:18 +0300
commitfd35e7870a6ab76d892756bdf1d7a85c3361147b (patch)
tree33b2cea5675979a768443e2ca514b4434701e3d6 /sql/item_strfunc.cc
parent32773212f543a9f28c2b0b2354476078fa46cd14 (diff)
downloadmariadb-git-fd35e7870a6ab76d892756bdf1d7a85c3361147b.tar.gz
Fix for bug#8978 : Crash on 'select format ...'
Diffstat (limited to 'sql/item_strfunc.cc')
-rw-r--r--sql/item_strfunc.cc13
1 files changed, 7 insertions, 6 deletions
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc
index aeb63d6af00..ec88f58aa93 100644
--- a/sql/item_strfunc.cc
+++ b/sql/item_strfunc.cc
@@ -1465,7 +1465,8 @@ Item_func_format::Item_func_format(Item *org,int dec) :Item_str_func(org)
String *Item_func_format::val_str(String *str)
{
double nr =args[0]->val();
- uint32 diff,length,str_length;
+ uint32 length,str_length;
+ int diff;
uint dec;
if ((null_value=args[0]->null_value))
return 0; /* purecov: inspected */
@@ -1483,17 +1484,17 @@ String *Item_func_format::val_str(String *str)
if (str_length >= dec+4)
{
char *tmp,*pos;
- length= str->length()+(diff=(str_length- dec-1)/3);
+ length= str->length()+(diff= (int)(str_length- dec-1)/3);
str= copy_if_not_alloced(&tmp_str,str,length);
str->length(length);
tmp= (char*) str->ptr()+length - dec-1;
for (pos= (char*) str->ptr()+length-1; pos != tmp; pos--)
- pos[0]= pos[-(int) diff];
+ pos[0]= pos[-diff];
while (diff)
{
- pos[0]=pos[-(int) diff]; pos--;
- pos[0]=pos[-(int) diff]; pos--;
- pos[0]=pos[-(int) diff]; pos--;
+ pos[0]=pos[-diff]; pos--;
+ pos[0]=pos[-diff]; pos--;
+ pos[0]=pos[-diff]; pos--;
pos[0]=',';
pos--;
diff--;