Commit 3afd1939 authored by konstantin@mysql.com's avatar konstantin@mysql.com

Portability fix in libmysql (FreeBSD)

parent 7216594f
...@@ -661,6 +661,7 @@ typedef SOCKET_SIZE_TYPE size_socket; ...@@ -661,6 +661,7 @@ typedef SOCKET_SIZE_TYPE size_socket;
#define UINT_MAX16 0xFFFF #define UINT_MAX16 0xFFFF
#define INT_MIN8 (~0x7F) #define INT_MIN8 (~0x7F)
#define INT_MAX8 0x7F #define INT_MAX8 0x7F
#define UINT_MAX8 0xFF
/* From limits.h instead */ /* From limits.h instead */
#ifndef DBL_MIN #ifndef DBL_MIN
......
...@@ -3442,7 +3442,7 @@ static void fetch_string_with_conversion(MYSQL_BIND *param, char *value, ...@@ -3442,7 +3442,7 @@ static void fetch_string_with_conversion(MYSQL_BIND *param, char *value,
longlong data= my_strntoll(&my_charset_latin1, value, length, 10, longlong data= my_strntoll(&my_charset_latin1, value, length, 10,
&endptr, &err); &endptr, &err);
*param->error= (IS_TRUNCATED(data, param->is_unsigned, *param->error= (IS_TRUNCATED(data, param->is_unsigned,
INT8_MIN, INT8_MAX, UINT8_MAX) | INT_MIN8, INT_MAX8, UINT_MAX8) |
test(err)); test(err));
*buffer= (uchar) data; *buffer= (uchar) data;
break; break;
...@@ -3452,7 +3452,7 @@ static void fetch_string_with_conversion(MYSQL_BIND *param, char *value, ...@@ -3452,7 +3452,7 @@ static void fetch_string_with_conversion(MYSQL_BIND *param, char *value,
longlong data= my_strntoll(&my_charset_latin1, value, length, 10, longlong data= my_strntoll(&my_charset_latin1, value, length, 10,
&endptr, &err); &endptr, &err);
*param->error= (IS_TRUNCATED(data, param->is_unsigned, *param->error= (IS_TRUNCATED(data, param->is_unsigned,
INT16_MIN, INT16_MAX, UINT16_MAX) | INT_MIN16, INT_MAX16, UINT_MAX16) |
test(err)); test(err));
shortstore(buffer, (short) data); shortstore(buffer, (short) data);
break; break;
...@@ -3462,7 +3462,7 @@ static void fetch_string_with_conversion(MYSQL_BIND *param, char *value, ...@@ -3462,7 +3462,7 @@ static void fetch_string_with_conversion(MYSQL_BIND *param, char *value,
longlong data= my_strntoll(&my_charset_latin1, value, length, 10, longlong data= my_strntoll(&my_charset_latin1, value, length, 10,
&endptr, &err); &endptr, &err);
*param->error= (IS_TRUNCATED(data, param->is_unsigned, *param->error= (IS_TRUNCATED(data, param->is_unsigned,
INT32_MIN, INT32_MAX, UINT32_MAX) | INT_MIN32, INT_MAX32, UINT_MAX32) |
test(err)); test(err));
longstore(buffer, (int32) data); longstore(buffer, (int32) data);
break; break;
...@@ -3564,17 +3564,17 @@ static void fetch_long_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field, ...@@ -3564,17 +3564,17 @@ static void fetch_long_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field,
break; break;
case MYSQL_TYPE_TINY: case MYSQL_TYPE_TINY:
*param->error= IS_TRUNCATED(value, param->is_unsigned, *param->error= IS_TRUNCATED(value, param->is_unsigned,
INT8_MIN, INT8_MAX, UINT8_MAX); INT_MIN8, INT_MAX8, UINT_MAX8);
*(uchar *)param->buffer= (uchar) value; *(uchar *)param->buffer= (uchar) value;
break; break;
case MYSQL_TYPE_SHORT: case MYSQL_TYPE_SHORT:
*param->error= IS_TRUNCATED(value, param->is_unsigned, *param->error= IS_TRUNCATED(value, param->is_unsigned,
INT16_MIN, INT16_MAX, UINT16_MAX); INT_MIN16, INT_MAX16, UINT_MAX16);
shortstore(buffer, (short) value); shortstore(buffer, (short) value);
break; break;
case MYSQL_TYPE_LONG: case MYSQL_TYPE_LONG:
*param->error= IS_TRUNCATED(value, param->is_unsigned, *param->error= IS_TRUNCATED(value, param->is_unsigned,
INT32_MIN, INT32_MAX, UINT32_MAX); INT_MIN32, INT_MAX32, UINT_MAX32);
longstore(buffer, (int32) value); longstore(buffer, (int32) value);
break; break;
case MYSQL_TYPE_LONGLONG: case MYSQL_TYPE_LONGLONG:
...@@ -3978,7 +3978,7 @@ static void fetch_result_tinyint(MYSQL_BIND *param, MYSQL_FIELD *field, ...@@ -3978,7 +3978,7 @@ static void fetch_result_tinyint(MYSQL_BIND *param, MYSQL_FIELD *field,
my_bool field_is_unsigned= test(field->flags & UNSIGNED_FLAG); my_bool field_is_unsigned= test(field->flags & UNSIGNED_FLAG);
uchar data= **row; uchar data= **row;
*(uchar *)param->buffer= data; *(uchar *)param->buffer= data;
*param->error= param->is_unsigned != field_is_unsigned && data > INT8_MAX; *param->error= param->is_unsigned != field_is_unsigned && data > INT_MAX8;
(*row)++; (*row)++;
} }
...@@ -3988,7 +3988,7 @@ static void fetch_result_short(MYSQL_BIND *param, MYSQL_FIELD *field, ...@@ -3988,7 +3988,7 @@ static void fetch_result_short(MYSQL_BIND *param, MYSQL_FIELD *field,
my_bool field_is_unsigned= test(field->flags & UNSIGNED_FLAG); my_bool field_is_unsigned= test(field->flags & UNSIGNED_FLAG);
ushort data= (ushort) sint2korr(*row); ushort data= (ushort) sint2korr(*row);
shortstore(param->buffer, data); shortstore(param->buffer, data);
*param->error= param->is_unsigned != field_is_unsigned && data > INT16_MAX; *param->error= param->is_unsigned != field_is_unsigned && data > INT_MAX16;
*row+= 2; *row+= 2;
} }
...@@ -3999,7 +3999,7 @@ static void fetch_result_int32(MYSQL_BIND *param, ...@@ -3999,7 +3999,7 @@ static void fetch_result_int32(MYSQL_BIND *param,
my_bool field_is_unsigned= test(field->flags & UNSIGNED_FLAG); my_bool field_is_unsigned= test(field->flags & UNSIGNED_FLAG);
uint32 data= (uint32) sint4korr(*row); uint32 data= (uint32) sint4korr(*row);
longstore(param->buffer, data); longstore(param->buffer, data);
*param->error= param->is_unsigned != field_is_unsigned && data > INT32_MAX; *param->error= param->is_unsigned != field_is_unsigned && data > INT_MAX32;
*row+= 4; *row+= 4;
} }
...@@ -4009,7 +4009,7 @@ static void fetch_result_int64(MYSQL_BIND *param, ...@@ -4009,7 +4009,7 @@ static void fetch_result_int64(MYSQL_BIND *param,
{ {
my_bool field_is_unsigned= test(field->flags & UNSIGNED_FLAG); my_bool field_is_unsigned= test(field->flags & UNSIGNED_FLAG);
ulonglong data= (ulonglong) sint8korr(*row); ulonglong data= (ulonglong) sint8korr(*row);
*param->error= param->is_unsigned != field_is_unsigned && data > INT64_MAX; *param->error= param->is_unsigned != field_is_unsigned && data > LONGLONG_MAX;
longlongstore(param->buffer, data); longlongstore(param->buffer, data);
*row+= 8; *row+= 8;
} }
...@@ -4149,7 +4149,7 @@ static my_bool is_binary_compatible(enum enum_field_types type1, ...@@ -4149,7 +4149,7 @@ static my_bool is_binary_compatible(enum enum_field_types type1,
MYSQL_TYPE_DECIMAL, 0 }, MYSQL_TYPE_DECIMAL, 0 },
*range_list[]= { range1, range2, range3, range4 }, *range_list[]= { range1, range2, range3, range4 },
**range_list_end= range_list + sizeof(range_list)/sizeof(*range_list); **range_list_end= range_list + sizeof(range_list)/sizeof(*range_list);
enum enum_field_types **range, *type; const enum enum_field_types **range, *type;
if (type1 == type2) if (type1 == type2)
return TRUE; return TRUE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment