Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
CONC-181 : Fix testing for truncation from double/float to integral t…
…ypes
  • Loading branch information
vaintroub committed Jun 2, 2016
1 parent d5c5f9a commit 8ca494e
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions libmariadb/ma_stmt_codec.c
Expand Up @@ -48,6 +48,7 @@
#include <ma_string.h>
#include <mariadb_ctype.h>
#include "mysql.h"
#include <math.h> /* ceil() */

#define MYSQL_SILENT

Expand Down Expand Up @@ -355,7 +356,11 @@ static void convert_from_long(MYSQL_BIND *r_param, const MYSQL_FIELD *field, lon

dbl= (is_unsigned) ? ulonglong2double((ulonglong)val) : (double)val;
doublestore(r_param->buffer, dbl);
*r_param->error= is_unsigned ? (ulonglong )dbl != (ulonglong)val : (longlong)dbl != (longlong)val;

*r_param->error = (dbl != ceil(dbl)) ||
(is_unsigned ? (ulonglong )dbl != (ulonglong)val :
(longlong)dbl != (longlong)val);

r_param->buffer_length= 8;
break;
}
Expand All @@ -364,7 +369,9 @@ static void convert_from_long(MYSQL_BIND *r_param, const MYSQL_FIELD *field, lon
float fval;
fval= is_unsigned ? (float)(ulonglong)(val) : (float)val;
float4store(r_param->buffer, fval);
*r_param->error= is_unsigned ? (ulonglong)fval != (ulonglong)val : (longlong)fval != val;
*r_param->error= (fval != ceilf(fval)) ||
(is_unsigned ? (ulonglong)fval != (ulonglong)val :
(longlong)fval != val);
r_param->buffer_length= 4;
}
break;
Expand Down

0 comments on commit 8ca494e

Please sign in to comment.