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 );
"Welcome to our mercurial repository"