# HG changeset patch # User mosu # Date 1121020273 0 # Node ID dcb042d5500d1f0703de048b019bced5acdaef57 # Parent 087142ef3a2d9358f87b881c30c2b363d790c3b6 Fix for gcc 4 and strict-aliasing. Patch by Uoti A Urpala ( urpala () cc ! helsinki ! fi ). diff -r 087142ef3a2d -r dcb042d5500d libmpdemux/ebml.c --- a/libmpdemux/ebml.c Sun Jul 10 17:14:12 2005 +0000 +++ b/libmpdemux/ebml.c Sun Jul 10 18:31:13 2005 +0000 @@ -175,30 +175,26 @@ { case 4: { - uint32_t i; - float *f; - i = stream_read_dword (s); - f = (float *) (void *) &i; - value = *f; + union {uint32_t i; float f;} u; + u.i = stream_read_dword (s); + value = u.f; break; } case 8: { - uint64_t i; - double *d; - i = stream_read_qword (s); - d = (double *) (void *) &i; - value = *d; + union {uint64_t i; double d;} u; + u.i = stream_read_qword (s); + value = u.d; break; } case 10: { - uint8_t data[10]; - if (stream_read (s, data, 10) != 10) + union {uint8_t data[10]; long double ld;} u; + if (stream_read (s, u.data, 10) != 10) return EBML_FLOAT_INVALID; - value = * (long double *) data; + value = u.ld; break; }