Mercurial > hg > waaad
changeset 314:192f0c2e0bdf
Fix bug introduced earlier, with float AVP values
author | Sebastien Decugis <sdecugis@nict.go.jp> |
---|---|
date | Wed, 25 Feb 2009 11:27:53 +0900 |
parents | 082d8f33f645 |
children | 2b15c02bd2c2 |
files | waaad/message.c waaad/tests/testmesg.c |
diffstat | 2 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/waaad/message.c Wed Feb 25 10:50:44 2009 +0900 +++ b/waaad/message.c Wed Feb 25 11:27:53 2009 +0900 @@ -811,12 +811,16 @@ break; case AVP_TYPE_FLOAT32: - PUT_in_buf_32(avp->avp_public.avp_data->f32, buffer + *offset); + /* We read the f32 as "u32" here to avoid casting to uint make decimals go away. + The alternative would be something like "*(uint32_t *)(& f32)" but + then the compiler complains about strict-aliasing rules. */ + PUT_in_buf_32(avp->avp_public.avp_data->u32, buffer + *offset); *offset += 4; break; case AVP_TYPE_FLOAT64: - PUT_in_buf_64(avp->avp_public.avp_data->f64, buffer + *offset); + /* Same remark as previously */ + PUT_in_buf_64(avp->avp_public.avp_data->u64, buffer + *offset); *offset += 8; break;
--- a/waaad/tests/testmesg.c Wed Feb 25 10:50:44 2009 +0900 +++ b/waaad/tests/testmesg.c Wed Feb 25 11:27:53 2009 +0900 @@ -352,7 +352,7 @@ CHECK( 0, msg_update_length ( avpi ) ); #if 0 log_debug("AVP no vendor, value 3.1415:\n"); - msg_dump_one(avpi); + msg_dump_one(INFO, avpi); #endif CHECK( 0, msg_avp_data ( avpi, &avpdata ) ); CHECK( 12, avpdata->avp_len );