@@ -84,32 +84,29 @@ } - (uint32_t)hash { uint32_t hash; - union { - float f; - unsigned char b[sizeof(float)]; - } f; + float tmp; OF_HASH_INIT(hash); - f.f = OF_BSWAP_FLOAT_IF_LE(_red); - for (uint_fast8_t i = 0; i < sizeof(float); i++) - OF_HASH_ADD(hash, f.b[i]); - - f.f = OF_BSWAP_FLOAT_IF_LE(_green); - for (uint_fast8_t i = 0; i < sizeof(float); i++) - OF_HASH_ADD(hash, f.b[i]); - - f.f = OF_BSWAP_FLOAT_IF_LE(_blue); - for (uint_fast8_t i = 0; i < sizeof(float); i++) - OF_HASH_ADD(hash, f.b[i]); - - f.f = OF_BSWAP_FLOAT_IF_LE(_alpha); - for (uint_fast8_t i = 0; i < sizeof(float); i++) - OF_HASH_ADD(hash, f.b[i]); + tmp = OF_BSWAP_FLOAT_IF_LE(_red); + for (uint_fast8_t i = 0; i < sizeof(float); i++) + OF_HASH_ADD(hash, ((char *)&tmp)[i]); + + tmp = OF_BSWAP_FLOAT_IF_LE(_green); + for (uint_fast8_t i = 0; i < sizeof(float); i++) + OF_HASH_ADD(hash, ((char *)&tmp)[i]); + + tmp = OF_BSWAP_FLOAT_IF_LE(_blue); + for (uint_fast8_t i = 0; i < sizeof(float); i++) + OF_HASH_ADD(hash, ((char *)&tmp)[i]); + + tmp = OF_BSWAP_FLOAT_IF_LE(_alpha); + for (uint_fast8_t i = 0; i < sizeof(float); i++) + OF_HASH_ADD(hash, ((char *)&tmp)[i]); OF_HASH_FINALIZE(hash); return hash; }