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,10 +49,12 @@ 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; json_int_t jsonint = val;
value = json_pack("I", jsonint); value = json_pack("I", jsonint);
} }
}
break; break;
case MAXAVRO_TYPE_ENUM: case MAXAVRO_TYPE_ENUM:
@ -74,12 +76,24 @@ 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;
case MAXAVRO_TYPE_BYTES: case MAXAVRO_TYPE_BYTES: