mirror of
https://github.com/MariaDB/server.git
synced 2025-01-26 00:34:18 +01:00
Merge bk-internal:/home/bk/mysql-5.1-new-maint
into loke.(none):/home/knielsen/devel/mysql-5.1-new-maint
This commit is contained in:
commit
3acf386878
4 changed files with 56 additions and 40 deletions
|
@ -845,6 +845,7 @@ size_t my_long10_to_str_8bit(CHARSET_INFO *cs __attribute__((unused)),
|
||||||
register char *p, *e;
|
register char *p, *e;
|
||||||
long int new_val;
|
long int new_val;
|
||||||
uint sign=0;
|
uint sign=0;
|
||||||
|
unsigned long int uval = (unsigned long int) val;
|
||||||
|
|
||||||
e = p = &buffer[sizeof(buffer)-1];
|
e = p = &buffer[sizeof(buffer)-1];
|
||||||
*p= 0;
|
*p= 0;
|
||||||
|
@ -853,15 +854,16 @@ size_t my_long10_to_str_8bit(CHARSET_INFO *cs __attribute__((unused)),
|
||||||
{
|
{
|
||||||
if (val < 0)
|
if (val < 0)
|
||||||
{
|
{
|
||||||
val= -val;
|
/* Avoid integer overflow in (-val) for LONGLONG_MIN (BUG#31799). */
|
||||||
|
uval= (unsigned long int)0 - uval;
|
||||||
*dst++= '-';
|
*dst++= '-';
|
||||||
len--;
|
len--;
|
||||||
sign= 1;
|
sign= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
new_val = (long) ((unsigned long int) val / 10);
|
new_val = (long) (uval / 10);
|
||||||
*--p = '0'+ (char) ((unsigned long int) val - (unsigned long) new_val * 10);
|
*--p = '0'+ (char) (uval - (unsigned long) new_val * 10);
|
||||||
val = new_val;
|
val = new_val;
|
||||||
|
|
||||||
while (val != 0)
|
while (val != 0)
|
||||||
|
@ -885,12 +887,14 @@ size_t my_longlong10_to_str_8bit(CHARSET_INFO *cs __attribute__((unused)),
|
||||||
register char *p, *e;
|
register char *p, *e;
|
||||||
long long_val;
|
long long_val;
|
||||||
uint sign= 0;
|
uint sign= 0;
|
||||||
|
ulonglong uval = (ulonglong)val;
|
||||||
|
|
||||||
if (radix < 0)
|
if (radix < 0)
|
||||||
{
|
{
|
||||||
if (val < 0)
|
if (val < 0)
|
||||||
{
|
{
|
||||||
val = -val;
|
/* Avoid integer overflow in (-val) for LONGLONG_MIN (BUG#31799). */
|
||||||
|
uval = (ulonglong)0 - uval;
|
||||||
*dst++= '-';
|
*dst++= '-';
|
||||||
len--;
|
len--;
|
||||||
sign= 1;
|
sign= 1;
|
||||||
|
@ -900,22 +904,22 @@ size_t my_longlong10_to_str_8bit(CHARSET_INFO *cs __attribute__((unused)),
|
||||||
e = p = &buffer[sizeof(buffer)-1];
|
e = p = &buffer[sizeof(buffer)-1];
|
||||||
*p= 0;
|
*p= 0;
|
||||||
|
|
||||||
if (val == 0)
|
if (uval == 0)
|
||||||
{
|
{
|
||||||
*--p= '0';
|
*--p= '0';
|
||||||
len= 1;
|
len= 1;
|
||||||
goto cnv;
|
goto cnv;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((ulonglong) val > (ulonglong) LONG_MAX)
|
while (uval > (ulonglong) LONG_MAX)
|
||||||
{
|
{
|
||||||
ulonglong quo=(ulonglong) val/(uint) 10;
|
ulonglong quo= uval/(uint) 10;
|
||||||
uint rem= (uint) (val- quo* (uint) 10);
|
uint rem= (uint) (uval- quo* (uint) 10);
|
||||||
*--p = '0' + rem;
|
*--p = '0' + rem;
|
||||||
val= quo;
|
uval= quo;
|
||||||
}
|
}
|
||||||
|
|
||||||
long_val= (long) val;
|
long_val= (long) uval;
|
||||||
while (long_val != 0)
|
while (long_val != 0)
|
||||||
{
|
{
|
||||||
long quo= long_val/10;
|
long quo= long_val/10;
|
||||||
|
|
|
@ -1019,6 +1019,7 @@ size_t my_l10tostr_ucs2(CHARSET_INFO *cs,
|
||||||
register char *p, *db, *de;
|
register char *p, *db, *de;
|
||||||
long int new_val;
|
long int new_val;
|
||||||
int sl=0;
|
int sl=0;
|
||||||
|
unsigned long int uval = (unsigned long int) val;
|
||||||
|
|
||||||
p = &buffer[sizeof(buffer)-1];
|
p = &buffer[sizeof(buffer)-1];
|
||||||
*p='\0';
|
*p='\0';
|
||||||
|
@ -1028,12 +1029,13 @@ size_t my_l10tostr_ucs2(CHARSET_INFO *cs,
|
||||||
if (val < 0)
|
if (val < 0)
|
||||||
{
|
{
|
||||||
sl = 1;
|
sl = 1;
|
||||||
val = -val;
|
/* Avoid integer overflow in (-val) for LONGLONG_MIN (BUG#31799). */
|
||||||
|
uval = (unsigned long int)0 - uval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
new_val = (long) ((unsigned long int) val / 10);
|
new_val = (long) (uval / 10);
|
||||||
*--p = '0'+ (char) ((unsigned long int) val - (unsigned long) new_val * 10);
|
*--p = '0'+ (char) (uval - (unsigned long) new_val * 10);
|
||||||
val = new_val;
|
val = new_val;
|
||||||
|
|
||||||
while (val != 0)
|
while (val != 0)
|
||||||
|
@ -1067,34 +1069,36 @@ size_t my_ll10tostr_ucs2(CHARSET_INFO *cs __attribute__((unused)),
|
||||||
register char *p, *db, *de;
|
register char *p, *db, *de;
|
||||||
long long_val;
|
long long_val;
|
||||||
int sl=0;
|
int sl=0;
|
||||||
|
ulonglong uval= (ulonglong) val;
|
||||||
|
|
||||||
if (radix < 0)
|
if (radix < 0)
|
||||||
{
|
{
|
||||||
if (val < 0)
|
if (val < 0)
|
||||||
{
|
{
|
||||||
sl=1;
|
sl=1;
|
||||||
val = -val;
|
/* Avoid integer overflow in (-val) for LONGLONG_MIN (BUG#31799). */
|
||||||
|
uval = (ulonglong)0 - uval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
p = &buffer[sizeof(buffer)-1];
|
p = &buffer[sizeof(buffer)-1];
|
||||||
*p='\0';
|
*p='\0';
|
||||||
|
|
||||||
if (val == 0)
|
if (uval == 0)
|
||||||
{
|
{
|
||||||
*--p='0';
|
*--p='0';
|
||||||
goto cnv;
|
goto cnv;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((ulonglong) val > (ulonglong) LONG_MAX)
|
while (uval > (ulonglong) LONG_MAX)
|
||||||
{
|
{
|
||||||
ulonglong quo=(ulonglong) val/(size_t) 10;
|
ulonglong quo= uval/(uint) 10;
|
||||||
uint rem= (uint) (val- quo* (uint) 10);
|
uint rem= (uint) (uval- quo* (uint) 10);
|
||||||
*--p = '0' + rem;
|
*--p = '0' + rem;
|
||||||
val= quo;
|
uval= quo;
|
||||||
}
|
}
|
||||||
|
|
||||||
long_val= (long) val;
|
long_val= (long) uval;
|
||||||
while (long_val != 0)
|
while (long_val != 0)
|
||||||
{
|
{
|
||||||
long quo= long_val/10;
|
long quo= long_val/10;
|
||||||
|
|
|
@ -57,6 +57,7 @@ int2str(register long int val, register char *dst, register int radix,
|
||||||
register char *p;
|
register char *p;
|
||||||
long int new_val;
|
long int new_val;
|
||||||
char *dig_vec= upcase ? _dig_vec_upper : _dig_vec_lower;
|
char *dig_vec= upcase ? _dig_vec_upper : _dig_vec_lower;
|
||||||
|
ulong uval= (ulong) val;
|
||||||
|
|
||||||
if (radix < 0)
|
if (radix < 0)
|
||||||
{
|
{
|
||||||
|
@ -65,7 +66,8 @@ int2str(register long int val, register char *dst, register int radix,
|
||||||
if (val < 0)
|
if (val < 0)
|
||||||
{
|
{
|
||||||
*dst++ = '-';
|
*dst++ = '-';
|
||||||
val = -val;
|
/* Avoid integer overflow in (-val) for LONGLONG_MIN (BUG#31799). */
|
||||||
|
uval = (ulong)0 - uval;
|
||||||
}
|
}
|
||||||
radix = -radix;
|
radix = -radix;
|
||||||
}
|
}
|
||||||
|
@ -86,8 +88,8 @@ int2str(register long int val, register char *dst, register int radix,
|
||||||
*/
|
*/
|
||||||
p = &buffer[sizeof(buffer)-1];
|
p = &buffer[sizeof(buffer)-1];
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
new_val=(ulong) val / (ulong) radix;
|
new_val= uval / (ulong) radix;
|
||||||
*--p = dig_vec[(uchar) ((ulong) val- (ulong) new_val*(ulong) radix)];
|
*--p = dig_vec[(uchar) (uval- (ulong) new_val*(ulong) radix)];
|
||||||
val = new_val;
|
val = new_val;
|
||||||
#ifdef HAVE_LDIV
|
#ifdef HAVE_LDIV
|
||||||
while (val != 0)
|
while (val != 0)
|
||||||
|
@ -133,20 +135,22 @@ char *int10_to_str(long int val,char *dst,int radix)
|
||||||
char buffer[65];
|
char buffer[65];
|
||||||
register char *p;
|
register char *p;
|
||||||
long int new_val;
|
long int new_val;
|
||||||
|
unsigned long int uval = (unsigned long int) val;
|
||||||
|
|
||||||
if (radix < 0) /* -10 */
|
if (radix < 0) /* -10 */
|
||||||
{
|
{
|
||||||
if (val < 0)
|
if (val < 0)
|
||||||
{
|
{
|
||||||
*dst++ = '-';
|
*dst++ = '-';
|
||||||
val = -val;
|
/* Avoid integer overflow in (-val) for LONGLONG_MIN (BUG#31799). */
|
||||||
|
uval = (unsigned long int)0 - uval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
p = &buffer[sizeof(buffer)-1];
|
p = &buffer[sizeof(buffer)-1];
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
new_val= (long) ((unsigned long int) val / 10);
|
new_val= (long) (uval / 10);
|
||||||
*--p = '0'+ (char) ((unsigned long int) val - (unsigned long) new_val * 10);
|
*--p = '0'+ (char) (uval - (unsigned long) new_val * 10);
|
||||||
val = new_val;
|
val = new_val;
|
||||||
|
|
||||||
while (val != 0)
|
while (val != 0)
|
||||||
|
|
|
@ -51,13 +51,15 @@ char *longlong2str(longlong val,char *dst,int radix)
|
||||||
char buffer[65];
|
char buffer[65];
|
||||||
register char *p;
|
register char *p;
|
||||||
long long_val;
|
long long_val;
|
||||||
|
ulonglong uval= (ulonglong) val;
|
||||||
|
|
||||||
if (radix < 0)
|
if (radix < 0)
|
||||||
{
|
{
|
||||||
if (radix < -36 || radix > -2) return (char*) 0;
|
if (radix < -36 || radix > -2) return (char*) 0;
|
||||||
if (val < 0) {
|
if (val < 0) {
|
||||||
*dst++ = '-';
|
*dst++ = '-';
|
||||||
val = -val;
|
/* Avoid integer overflow in (-val) for LONGLONG_MIN (BUG#31799). */
|
||||||
|
uval = (ulonglong)0 - uval;
|
||||||
}
|
}
|
||||||
radix = -radix;
|
radix = -radix;
|
||||||
}
|
}
|
||||||
|
@ -65,7 +67,7 @@ char *longlong2str(longlong val,char *dst,int radix)
|
||||||
{
|
{
|
||||||
if (radix > 36 || radix < 2) return (char*) 0;
|
if (radix > 36 || radix < 2) return (char*) 0;
|
||||||
}
|
}
|
||||||
if (val == 0)
|
if (uval == 0)
|
||||||
{
|
{
|
||||||
*dst++='0';
|
*dst++='0';
|
||||||
*dst='\0';
|
*dst='\0';
|
||||||
|
@ -74,14 +76,14 @@ char *longlong2str(longlong val,char *dst,int radix)
|
||||||
p = &buffer[sizeof(buffer)-1];
|
p = &buffer[sizeof(buffer)-1];
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
|
||||||
while ((ulonglong) val > (ulonglong) LONG_MAX)
|
while (uval > (ulonglong) LONG_MAX)
|
||||||
{
|
{
|
||||||
ulonglong quo=(ulonglong) val/(uint) radix;
|
ulonglong quo= uval/(uint) radix;
|
||||||
uint rem= (uint) (val- quo* (uint) radix);
|
uint rem= (uint) (uval- quo* (uint) radix);
|
||||||
*--p = _dig_vec_upper[rem];
|
*--p = _dig_vec_upper[rem];
|
||||||
val= quo;
|
uval= quo;
|
||||||
}
|
}
|
||||||
long_val= (long) val;
|
long_val= (long) uval;
|
||||||
while (long_val != 0)
|
while (long_val != 0)
|
||||||
{
|
{
|
||||||
long quo= long_val/radix;
|
long quo= long_val/radix;
|
||||||
|
@ -100,17 +102,19 @@ char *longlong10_to_str(longlong val,char *dst,int radix)
|
||||||
char buffer[65];
|
char buffer[65];
|
||||||
register char *p;
|
register char *p;
|
||||||
long long_val;
|
long long_val;
|
||||||
|
ulonglong uval= (ulonglong) val;
|
||||||
|
|
||||||
if (radix < 0)
|
if (radix < 0)
|
||||||
{
|
{
|
||||||
if (val < 0)
|
if (val < 0)
|
||||||
{
|
{
|
||||||
*dst++ = '-';
|
*dst++ = '-';
|
||||||
val = -val;
|
/* Avoid integer overflow in (-val) for LONGLONG_MIN (BUG#31799). */
|
||||||
|
uval = (ulonglong)0 - uval;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (val == 0)
|
if (uval == 0)
|
||||||
{
|
{
|
||||||
*dst++='0';
|
*dst++='0';
|
||||||
*dst='\0';
|
*dst='\0';
|
||||||
|
@ -119,14 +123,14 @@ char *longlong10_to_str(longlong val,char *dst,int radix)
|
||||||
p = &buffer[sizeof(buffer)-1];
|
p = &buffer[sizeof(buffer)-1];
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
|
||||||
while ((ulonglong) val > (ulonglong) LONG_MAX)
|
while (uval > (ulonglong) LONG_MAX)
|
||||||
{
|
{
|
||||||
ulonglong quo=(ulonglong) val/(uint) 10;
|
ulonglong quo= uval/(uint) 10;
|
||||||
uint rem= (uint) (val- quo* (uint) 10);
|
uint rem= (uint) (uval- quo* (uint) 10);
|
||||||
*--p = _dig_vec_upper[rem];
|
*--p = _dig_vec_upper[rem];
|
||||||
val= quo;
|
uval= quo;
|
||||||
}
|
}
|
||||||
long_val= (long) val;
|
long_val= (long) uval;
|
||||||
while (long_val != 0)
|
while (long_val != 0)
|
||||||
{
|
{
|
||||||
long quo= long_val/10;
|
long quo= long_val/10;
|
||||||
|
|
Loading…
Add table
Reference in a new issue