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