From 6b14f544e7b11f5bbeaace74426aa19266129019 Mon Sep 17 00:00:00 2001 From: Hans-Joerg Schurr Date: Fri, 24 Apr 2020 23:00:08 +0200 Subject: [PATCH] Fix warning strict alignment break --- src/hvif-light.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/hvif-light.c b/src/hvif-light.c index 15cd1fb..d126890 100644 --- a/src/hvif-light.c +++ b/src/hvif-light.c @@ -97,7 +97,7 @@ typedef enum hvif_line_cap HVIF_LINE_CAP_TYPE_MAX } hvif_line_cap; -/* An affine transformation. Ugly until I understand better how they are used */ +/* An affine transformation. */ typedef struct hvif_matrix hvif_matrix; struct hvif_matrix { @@ -242,8 +242,13 @@ hvif_decode_float(uint8_t buffer[static 1]) return 0.0; else { /* TODO: float might not be IEEE 754 compatible */ - uint32_t value = (sign << 31) | ((exponent + 127) << 23) | mantissa; - return *((float*)&value); + union + { + uint32_t uint_f; + float float_f; + } value; + value.uint_f = (sign << 31) | ((exponent + 127) << 23) | mantissa; + return value.float_f; } } static inline hvif_matrix