diff options
Diffstat (limited to 'src/demuxers/ebml.c')
-rw-r--r-- | src/demuxers/ebml.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/demuxers/ebml.c b/src/demuxers/ebml.c index aabdea362..268f5e2e6 100644 --- a/src/demuxers/ebml.c +++ b/src/demuxers/ebml.c @@ -283,15 +283,19 @@ int ebml_read_float (ebml_parser_t *ebml, ebml_elem_t *elem, double *num) { } if (size == 4) { - float f; - - *((uint32_t *) &f) = _X_BE_32(data); - *num = f; + union { + float f; + uint32_t u32; + } tmp; + tmp.u32 = _X_BE_32(data); + *num = tmp.f; } else { - double d; - - *((uint64_t *) &d) = _X_BE_64(data); - *num = d; + union { + double d; + uint64_t u64; + } tmp; + tmp.u64 = _X_BE_64(data); + *num = tmp.d; } return 1; } |