From 4e228b5d61e25823b573457b170ad012c86a0a71 Mon Sep 17 00:00:00 2001 From: Graham Miller Date: Wed, 9 Feb 2011 18:49:53 -0500 Subject: changed encode_double to use memecpy --- encode.c | 6 +++++- encode_test.c | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/encode.c b/encode.c index 687dbfe..acf24b7 100644 --- a/encode.c +++ b/encode.c @@ -80,7 +80,11 @@ int gob_encode_boolean(char *buf, size_t buf_size, int b) { } int gob_encode_double(char *buf, size_t buf_size, double d) { - return gob_encode_unsigned_long_long(buf, buf_size, flip_unsigned_long_long(*(unsigned long long*)&d)); + unsigned long long ull = 0; + memcpy((char*)&ull, &d, sizeof(double)); + unsigned long long rev_ull = flip_unsigned_long_long(ull); + + return gob_encode_unsigned_long_long(buf, buf_size, rev_ull); } int gob_encode_string(char *buf, size_t buf_size, const char *s) { diff --git a/encode_test.c b/encode_test.c index 6b70a81..dea53d7 100644 --- a/encode_test.c +++ b/encode_test.c @@ -74,7 +74,8 @@ void test_flip_unsigned_long_long(){ void test_gob_encode_double() { char buf[1024]; - int num_bytes = gob_encode_double(buf, 1024, 17.0); + double doubleval = 17; + int num_bytes = gob_encode_double(buf, 1024, doubleval); CU_ASSERT_EQUAL(3, num_bytes); CU_ASSERT_EQUAL((char)0xFE, buf[0]); CU_ASSERT_EQUAL((char)0x31, buf[1]); -- cgit v1.2.3