OSDN Git Service

Fix unaligned access in ff_copy_bits()
authorMåns Rullgård <mans@mansr.com>
Mon, 9 Mar 2009 23:27:38 +0000 (23:27 +0000)
committerMåns Rullgård <mans@mansr.com>
Mon, 9 Mar 2009 23:27:38 +0000 (23:27 +0000)
Originally committed as revision 17921 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/bitstream.c

index 57dd93e..6781fe6 100644 (file)
@@ -83,7 +83,7 @@ void ff_copy_bits(PutBitContext *pb, const uint8_t *src, int length)
     if(length==0) return;
 
     if(CONFIG_SMALL || words < 16 || put_bits_count(pb)&7){
-        for(i=0; i<words; i++) put_bits(pb, 16, be2me_16(srcw[i]));
+        for(i=0; i<words; i++) put_bits(pb, 16, AV_RB16(&srcw[i]));
     }else{
         for(i=0; put_bits_count(pb)&31; i++)
             put_bits(pb, 8, src[i]);
@@ -92,7 +92,7 @@ void ff_copy_bits(PutBitContext *pb, const uint8_t *src, int length)
         skip_put_bytes(pb, 2*words-i);
     }
 
-    put_bits(pb, bits, be2me_16(srcw[words])>>(16-bits));
+    put_bits(pb, bits, AV_RB16(&srcw[words])>>(16-bits));
 }
 
 /* VLC decoding */