Skip to content

Commit 9678a7c

Browse files
dzfranklindwrensha
authored andcommitted
Use aligned buffer in tests
These tests failed verify_alignment under miri. I suspect they were passing not under miri because the allocator happened to overalign.
1 parent 05d6190 commit 9678a7c

File tree

2 files changed

+24
-13
lines changed

2 files changed

+24
-13
lines changed

capnp/src/serialize/no_alloc_slice_segments.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ mod tests {
319319
use crate::{
320320
message::{ReaderOptions, ReaderSegments},
321321
serialize::{self, no_alloc_slice_segments::calculate_data_offset},
322-
OutputSegments, Word,
322+
word, OutputSegments, Word,
323323
};
324324

325325
use super::{
@@ -465,15 +465,16 @@ mod tests {
465465
#[test]
466466
fn test_no_alloc_buffer_segments_message_postfix() {
467467
let output_segments = OutputSegments::SingleSegment([&[1, 2, 3, 4, 5, 6, 7, 8]]);
468-
let mut buf = vec![];
469-
serialize::write_message_segments(&mut buf, &output_segments).unwrap();
470-
buf.extend_from_slice(&[11, 12, 13, 14, 15, 16]);
468+
let mut buf = Word::allocate_zeroed_vec(2);
469+
serialize::write_message_segments(Word::words_to_bytes_mut(&mut buf), &output_segments)
470+
.unwrap();
471+
buf.push(word(11, 12, 13, 14, 15, 16, 0, 0));
471472

472-
let remaining = &mut buf.as_slice();
473+
let remaining = &mut Word::words_to_bytes(&buf);
473474
NoAllocSliceSegments::try_new(remaining, ReaderOptions::new()).unwrap();
474475

475476
// Confirm that slice pointer was advanced to data past first message
476-
assert_eq!(*remaining, &[11, 12, 13, 14, 15, 16]);
477+
assert_eq!(*remaining, &[11, 12, 13, 14, 15, 16, 0, 0]);
477478
}
478479

479480
#[test]

capnpc/test/test.rs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ mod tests {
8989
use crate::test_util::{init_test_message, CheckTestMessage};
9090
use capnp::message::ReaderOptions;
9191
use capnp::message::{self, TypedBuilder, TypedReader};
92-
use capnp::{primitive_list, text};
92+
use capnp::{primitive_list, text, Word};
9393

9494
// like the unstable std::assert_matches::assert_matches but doesn't
9595
// require $left implement Debug
@@ -2123,11 +2123,16 @@ mod tests {
21232123
CheckTestMessage::check_test_message(typed_builder.get_root().unwrap());
21242124
CheckTestMessage::check_test_message(typed_builder.get_root_as_reader().unwrap());
21252125

2126-
let mut buffer = vec![];
2127-
capnp::serialize::write_message(&mut buffer, typed_builder.borrow_inner()).unwrap();
2126+
let mut buffer = Word::allocate_zeroed_vec(512);
2127+
2128+
capnp::serialize::write_message(
2129+
Word::words_to_bytes_mut(&mut buffer),
2130+
typed_builder.borrow_inner(),
2131+
)
2132+
.unwrap();
21282133

21292134
let reader = capnp::serialize::read_message_from_flat_slice(
2130-
&mut buffer.as_slice(),
2135+
&mut Word::words_to_bytes(&buffer),
21312136
ReaderOptions::new(),
21322137
)
21332138
.unwrap();
@@ -2145,11 +2150,16 @@ mod tests {
21452150
CheckTestMessage::check_test_message(typed_builder.get_root().unwrap());
21462151
CheckTestMessage::check_test_message(typed_builder.get_root_as_reader().unwrap());
21472152

2148-
let mut buffer = vec![];
2149-
capnp::serialize::write_message(&mut buffer, typed_builder.borrow_inner()).unwrap();
2153+
let mut buffer = Word::allocate_zeroed_vec(512);
2154+
2155+
capnp::serialize::write_message(
2156+
Word::words_to_bytes_mut(&mut buffer),
2157+
typed_builder.borrow_inner(),
2158+
)
2159+
.unwrap();
21502160

21512161
let reader = capnp::serialize::read_message_from_flat_slice_no_alloc(
2152-
&mut buffer.as_slice(),
2162+
&mut Word::words_to_bytes(&buffer),
21532163
ReaderOptions::new(),
21542164
)
21552165
.unwrap();

0 commit comments

Comments
 (0)