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:
{
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);
}
}
break;
case MAXAVRO_TYPE_ENUM:
@ -74,12 +76,24 @@ static json_t* read_and_pack_value(MAXAVRO_FILE *file, MAXAVRO_SCHEMA_FIELD *fie
break;
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:
{
double d = 0;
maxavro_read_double(file, &d);
if (maxavro_read_double(file, &d))
{
value = json_pack("f", d);
}
}
break;
case MAXAVRO_TYPE_BYTES: