summaryrefslogtreecommitdiff
path: root/strings
diff options
context:
space:
mode:
Diffstat (limited to 'strings')
-rw-r--r--strings/longlong2str.c7
-rw-r--r--strings/my_vsnprintf.c14
2 files changed, 11 insertions, 10 deletions
diff --git a/strings/longlong2str.c b/strings/longlong2str.c
index d7de5bb0f7c..61b45b731c4 100644
--- a/strings/longlong2str.c
+++ b/strings/longlong2str.c
@@ -46,11 +46,12 @@
This assumes that longlong multiplication is faster than longlong division.
*/
-char *longlong2str(longlong val,char *dst,int radix)
+char *longlong2str(longlong val,char *dst,int radix, int upcase)
{
char buffer[65];
register char *p;
long long_val;
+ const char *dig_vec= upcase ? _dig_vec_upper : _dig_vec_lower;
ulonglong uval= (ulonglong) val;
if (radix < 0)
@@ -80,14 +81,14 @@ char *longlong2str(longlong val,char *dst,int radix)
{
ulonglong quo= uval/(uint) radix;
uint rem= (uint) (uval- quo* (uint) radix);
- *--p = _dig_vec_upper[rem];
+ *--p = _dig_vec[rem];
uval= quo;
}
long_val= (long) uval;
while (long_val != 0)
{
long quo= long_val/radix;
- *--p = _dig_vec_upper[(uchar) (long_val - quo*radix)];
+ *--p = _dig_vec[(uchar) (long_val - quo*radix)];
long_val= quo;
}
while ((*dst++ = *p++) != 0) ;
diff --git a/strings/my_vsnprintf.c b/strings/my_vsnprintf.c
index 79267461c47..fbe4c1bdf6f 100644
--- a/strings/my_vsnprintf.c
+++ b/strings/my_vsnprintf.c
@@ -235,19 +235,19 @@ static char *process_int_arg(char *to, char *end, size_t length,
store_start= buff;
if (arg_type == 'd')
- store_end= int10_to_str(par, store_start, -10);
+ store_end= longlong10_to_str(par, store_start, -10);
else if (arg_type == 'u')
- store_end= int10_to_str(par, store_start, 10);
+ store_end= longlong10_to_str(par, store_start, 10);
else if (arg_type == 'p')
{
store_start[0]= '0';
store_start[1]= 'x';
- store_end= int2str(par, store_start + 2, 16, 0);
+ store_end= longlong2str(par, store_start + 2, 16, 0);
}
else
{
DBUG_ASSERT(arg_type == 'X' || arg_type =='x');
- store_end= int2str(par, store_start, 16, (arg_type == 'X'));
+ store_end= longlong2str(par, store_start, 16, (arg_type == 'X'));
}
if ((res_length= (size_t) (store_end - store_start)) > to_length)
@@ -430,9 +430,9 @@ start:
{
/* Integer parameter */
longlong larg;
- length= ((print_arr[i].flags & LENGTH_ARG) ?
- args_arr[print_arr[i].length].longlong_arg :
- (longlong) print_arr[i].length);
+ length= (int) ((print_arr[i].flags & LENGTH_ARG) ?
+ args_arr[print_arr[i].length].longlong_arg :
+ (longlong) print_arr[i].length);
if (args_arr[print_arr[i].arg_idx].have_longlong)
larg = args_arr[print_arr[i].arg_idx].longlong_arg;