From 3987f2d26039fb6a7377073ed4d77c8dd208cda9 Mon Sep 17 00:00:00 2001 From: mosu Date: Sun, 10 Jul 2005 18:31:13 +0000 Subject: Fix for gcc 4 and strict-aliasing. Patch by Uoti A Urpala ( urpala () cc ! helsinki ! fi ). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15960 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/ebml.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) (limited to 'libmpdemux/ebml.c') diff --git a/libmpdemux/ebml.c b/libmpdemux/ebml.c index 56664a2ded..952a3894a5 100644 --- a/libmpdemux/ebml.c +++ b/libmpdemux/ebml.c @@ -175,30 +175,26 @@ ebml_read_float (stream_t *s, uint64_t *length) { 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; } -- cgit v1.2.3