Fix floats being read as doubles

The avro floating point numbers were processed as 8 byte values when they
are 4 bytes values.
This commit is contained in:
Markus Mäkelä
2017-02-09 15:00:19 +02:00
parent e3bed424ea
commit 526e48e459

View File

@ -49,9 +49,11 @@ static json_t* read_and_pack_value(MAXAVRO_FILE *file, MAXAVRO_SCHEMA_FIELD *fie
case MAXAVRO_TYPE_LONG: case MAXAVRO_TYPE_LONG:
{ {
uint64_t val = 0; uint64_t val = 0;
maxavro_read_integer(file, &val); if (maxavro_read_integer(file, &val))
json_int_t jsonint = val; {
value = json_pack("I", jsonint); json_int_t jsonint = val;
value = json_pack("I", jsonint);
}
} }
break; break;
@ -74,11 +76,23 @@ static json_t* read_and_pack_value(MAXAVRO_FILE *file, MAXAVRO_SCHEMA_FIELD *fie
break; break;
case MAXAVRO_TYPE_FLOAT: case MAXAVRO_TYPE_FLOAT:
{
float f = 0;
if (maxavro_read_float(file, &f))
{
double d = f;
value = json_pack("f", d);
}
}
break;
case MAXAVRO_TYPE_DOUBLE: case MAXAVRO_TYPE_DOUBLE:
{ {
double d = 0; double d = 0;
maxavro_read_double(file, &d); if (maxavro_read_double(file, &d))
value = json_pack("f", d); {
value = json_pack("f", d);
}
} }
break; break;