diff --git a/libavformat/matroska.c b/libavformat/matroska.c index 7fcc3c91f9..f8942aee4b 100644 --- a/libavformat/matroska.c +++ b/libavformat/matroska.c @@ -624,10 +624,10 @@ ebml_read_float (MatroskaDemuxContext *matroska, if (size == 4) { float f; + while (size-- > 0) #ifdef WORDS_BIGENDIAN - f = * (float *) data; + ((uint8_t *) &f)[3 - size] = get_byte(pb); #else - while (size-- > 0) ((uint8_t *) &f)[size] = get_byte(pb); #endif @@ -635,10 +635,10 @@ ebml_read_float (MatroskaDemuxContext *matroska, } else { double d; + while (size-- > 0) #ifdef WORDS_BIGENDIAN - d = * (double *) data; + ((uint8_t *) &d)[7 - size] = get_byte(pb); #else - while (size-- > 0) ((uint8_t *) &d)[size] = get_byte(pb); #endif