[FFmpeg-cvslog] r21878 - trunk/libavutil/intreadwrite.h

mru subversion
Thu Feb 18 14:40:22 CET 2010


Author: mru
Date: Thu Feb 18 14:40:21 2010
New Revision: 21878

Log:
Use alias-safe types in AV_[RW] macros

Modified:
   trunk/libavutil/intreadwrite.h

Modified: trunk/libavutil/intreadwrite.h
==============================================================================
--- trunk/libavutil/intreadwrite.h	Thu Feb 18 14:40:19 2010	(r21877)
+++ trunk/libavutil/intreadwrite.h	Thu Feb 18 14:40:21 2010	(r21878)
@@ -177,12 +177,12 @@ typedef union {
 
 #if   HAVE_ATTRIBUTE_PACKED
 
-struct unaligned_64 { uint64_t l; } __attribute__((packed));
-struct unaligned_32 { uint32_t l; } __attribute__((packed));
-struct unaligned_16 { uint16_t l; } __attribute__((packed));
+union unaligned_64 { uint64_t l; } __attribute__((packed)) av_alias;
+union unaligned_32 { uint32_t l; } __attribute__((packed)) av_alias;
+union unaligned_16 { uint16_t l; } __attribute__((packed)) av_alias;
 
-#   define AV_RN(s, p) (((const struct unaligned_##s *) (p))->l)
-#   define AV_WN(s, p, v) ((((struct unaligned_##s *) (p))->l) = (v))
+#   define AV_RN(s, p) (((const union unaligned_##s *) (p))->l)
+#   define AV_WN(s, p, v) ((((union unaligned_##s *) (p))->l) = (v))
 
 #elif defined(__DECC)
 
@@ -191,8 +191,8 @@ struct unaligned_16 { uint16_t l; } __at
 
 #elif HAVE_FAST_UNALIGNED
 
-#   define AV_RN(s, p) (*((const uint##s##_t*)(p)))
-#   define AV_WN(s, p, v) (*((uint##s##_t*)(p)) = (v))
+#   define AV_RN(s, p) (((const av_alias##s*)(p))->u##s)
+#   define AV_WN(s, p, v) (((uint##s##_t*)(p))->u##s = (v))
 
 #else
 



More information about the ffmpeg-cvslog mailing list