Просмотр исходного кода

aya: fix include_bytes_aligned! macro to work in some corner cases

I found a corner case in my own development workflow that caused the existing macro to not
work properly. The following changes appear to fix things. Ideally, we could add some test
cases to CI to prevent regressions.  This would require creating a dedicated directory to
hold test cases so that we can "include" them at compile time.
William Findlay 3 лет назад
Родитель
Сommit
99f6f9e14d
1 измененных файлов с 4 добавлено и 1 удалено
  1. 4 1
      aya/src/util.rs

+ 4 - 1
aya/src/util.rs

@@ -125,9 +125,12 @@ pub(crate) fn tc_handler_make(major: u32, minor: u32) -> u32 {
 #[macro_export]
 macro_rules! include_bytes_aligned {
     ($path:literal) => {{
+        #[repr(align(32))]
+        pub struct Aligned32;
+
         #[repr(C)]
         pub struct Aligned<Bytes: ?Sized> {
-            pub _align: [u32; 0],
+            pub _align: [Aligned32; 0],
             pub bytes: Bytes,
         }