From 61cc7f612477bffb689ebef22473994ae006c909 Mon Sep 17 00:00:00 2001 From: whydoubt Date: Sun, 22 Aug 2004 02:21:59 +0000 Subject: [PATCH] Clean up a bug in the new mdb_get_single/double --- ChangeLog | 3 +++ src/libmdb/file.c | 10 ++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 76cecef..64c5b54 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +Sat Aug 21 21:21:56 CDT 2004 Jeff Smith + * src/libmdb/file.c: Clean up a bug in the new mdb_get_single/double + Thu Aug 19 21:37:21 CDT 2004 Jeff Smith * configure.in: * src/libmdb/file.c: Use GLib to deal with endian issues diff --git a/src/libmdb/file.c b/src/libmdb/file.c index fe5ae26..ae347ca 100644 --- a/src/libmdb/file.c +++ b/src/libmdb/file.c @@ -332,9 +332,10 @@ long mdb_pg_get_int32(MdbHandle *mdb, int offset) float mdb_get_single(unsigned char *buf, int offset) { - guint32 f; + union {guint32 g; float f;} f; memcpy(&f, &buf[offset], 4); - return (float)GINT32_FROM_LE(f); + f.g = GUINT32_FROM_LE(f.g); + return f.f; } float mdb_pg_get_single(MdbHandle *mdb, int offset) { @@ -345,9 +346,10 @@ float mdb_pg_get_single(MdbHandle *mdb, int offset) double mdb_get_double(unsigned char *buf, int offset) { - guint64 d; + union {guint64 g; double d;} d; memcpy(&d, &buf[offset], 8); - return (double)GINT64_FROM_LE(d); + d.g = GUINT64_FROM_LE(d.g); + return d.d; } double mdb_pg_get_double(MdbHandle *mdb, int offset) {