From dccc88b7228330a7d0014831a668dd145db92098 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Sun, 29 Aug 2021 15:30:34 +1000 Subject: [PATCH] Fix incorrect conversion of double values Fixes #339 --- src/libmdb/file.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/libmdb/file.c b/src/libmdb/file.c index a3c892a..758d901 100644 --- a/src/libmdb/file.c +++ b/src/libmdb/file.c @@ -456,9 +456,14 @@ double mdb_get_double(void *buf, int offset) { union {guint64 g; double d;} d; unsigned char *u8_buf = (unsigned char *)buf + offset; - d.g = u8_buf[0] + (u8_buf[1] << 8) + (u8_buf[2] << 16) + (u8_buf[3] << 24) + - ((guint64)u8_buf[4] << 32) + ((guint64)u8_buf[5] << 40) + - ((guint64)u8_buf[6] << 48) + ((guint64)u8_buf[7] << 56); + d.g = ((guint64)u8_buf[0]) + + ((guint64)u8_buf[1] << 8) + + ((guint64)u8_buf[2] << 16) + + ((guint64)u8_buf[3] << 24) + + ((guint64)u8_buf[4] << 32) + + ((guint64)u8_buf[5] << 40) + + ((guint64)u8_buf[6] << 48) + + ((guint64)u8_buf[7] << 56); return d.d; } double mdb_pg_get_double(MdbHandle *mdb, int offset)