Clean up a bug in the new mdb_get_single/double

This commit is contained in:
whydoubt
2004-08-22 02:21:59 +00:00
parent 7959694bc5
commit 61cc7f6124
2 changed files with 9 additions and 4 deletions

View File

@@ -1,3 +1,6 @@
Sat Aug 21 21:21:56 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
* 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 <whydoubt@yahoo.com> Thu Aug 19 21:37:21 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
* configure.in: * configure.in:
* src/libmdb/file.c: Use GLib to deal with endian issues * src/libmdb/file.c: Use GLib to deal with endian issues

View File

@@ -332,9 +332,10 @@ long mdb_pg_get_int32(MdbHandle *mdb, int offset)
float mdb_get_single(unsigned char *buf, int offset) float mdb_get_single(unsigned char *buf, int offset)
{ {
guint32 f; union {guint32 g; float f;} f;
memcpy(&f, &buf[offset], 4); 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) 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) double mdb_get_double(unsigned char *buf, int offset)
{ {
guint64 d; union {guint64 g; double d;} d;
memcpy(&d, &buf[offset], 8); 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) double mdb_pg_get_double(MdbHandle *mdb, int offset)
{ {