From 105a2c1c03aba7e53d420ac23cba7b95e7a40f8e Mon Sep 17 00:00:00 2001 From: "konstantin@mysql.com" <> Date: Fri, 15 Oct 2004 03:54:40 +0400 Subject: [PATCH] Fix for Bug#6024 "Test "client_test" fails in 4.1.6-gamma build (1)": let's not assume that char is signed (its signedness is not defined). The server was also affected by the wrong typedef. --- include/my_global.h | 2 +- libmysql/libmysql.c | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/include/my_global.h b/include/my_global.h index 8e2e8e0eb6a..f6200830ee3 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -713,7 +713,7 @@ typedef void *gptr; /* Generic pointer */ typedef char *gptr; /* Generic pointer */ #endif #ifndef HAVE_INT_8_16_32 -typedef char int8; /* Signed integer >= 8 bits */ +typedef signed char int8; /* Signed integer >= 8 bits */ typedef short int16; /* Signed integer >= 16 bits */ #endif #ifndef HAVE_UCHAR diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c index b8e53cf92bb..ef926e2f93d 100644 --- a/libmysql/libmysql.c +++ b/libmysql/libmysql.c @@ -3611,9 +3611,10 @@ static void fetch_result_with_conversion(MYSQL_BIND *param, MYSQL_FIELD *field, switch (field_type) { case MYSQL_TYPE_TINY: { - char value= (char) **row; - longlong data= field_is_unsigned ? (longlong) (unsigned char) value : - (longlong) value; + uchar value= **row; + /* sic: we need to cast to 'signed char' as 'char' may be unsigned */ + longlong data= field_is_unsigned ? (longlong) value : + (longlong) (signed char) value; fetch_long_with_conversion(param, field, data); *row+= 1; break;