Skip to content

Commit 84ff579

Browse files
committed
fix impl of size_in_words for ReaderArena
1 parent 6b0b260 commit 84ff579

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

capnp/src/private/arena.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ where
157157
let mut result = 0;
158158
for ii in 0..self.segments.len() {
159159
if let Some(seg) = self.segments.get_segment(ii as u32) {
160-
result += seg.len();
160+
result += seg.len() / BYTES_PER_WORD;
161161
}
162162
}
163163
result
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#![cfg(feature = "alloc")]
2+
3+
use capnp::message;
4+
use capnp::serialize;
5+
use capnp::text;
6+
7+
#[test]
8+
fn message_size_in_words() {
9+
let mut testdata = b"Hello, World!".to_vec();
10+
let testdata = text::Builder::new(&mut testdata);
11+
12+
let mut message = message::Builder::new_default();
13+
message.set_root(testdata.into_reader()).unwrap();
14+
assert_eq!(message.size_in_words(), 3);
15+
16+
let buffer = serialize::write_message_to_words(&message);
17+
assert_eq!(buffer.len(), 32);
18+
19+
let message =
20+
serialize::read_message_from_flat_slice(&mut &*buffer, Default::default()).unwrap();
21+
assert_eq!(message.size_in_words(), 3);
22+
}

0 commit comments

Comments
 (0)