Skip to content

Commit e47d67b

Browse files
committed
fix(message-buffer): resize borrow bug fix
1 parent 245c0b2 commit e47d67b

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

pythnet/message_buffer/programs/message_buffer/src/instructions/resize_buffer.rs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -82,17 +82,20 @@ pub fn resize_buffer<'info>(
8282
} else {
8383
// Check that account doesn't get resized to smaller than the amount of
8484
// data it is currently holding (if any)
85-
let account_data = &mut message_buffer_account_info.try_borrow_data()?;
86-
let header_end_index = std::mem::size_of::<MessageBuffer>() + 8;
87-
let (header_bytes, _) = account_data.split_at(header_end_index);
88-
let message_buffer: &MessageBuffer = bytemuck::from_bytes(&header_bytes[8..]);
89-
let max_end_offset = message_buffer.end_offsets.iter().max().unwrap();
90-
let minimum_size = max_end_offset + message_buffer.header_len;
91-
require_gte!(
92-
target_size,
93-
minimum_size as usize,
94-
MessageBufferError::MessageBufferTooSmall
95-
);
85+
{
86+
let account_data = &message_buffer_account_info.try_borrow_data()?;
87+
let header_end_index = std::mem::size_of::<MessageBuffer>() + 8;
88+
let (header_bytes, _) = account_data.split_at(header_end_index);
89+
let message_buffer: &MessageBuffer = bytemuck::from_bytes(&header_bytes[8..]);
90+
let max_end_offset = message_buffer.end_offsets.iter().max().unwrap();
91+
let minimum_size = max_end_offset + message_buffer.header_len;
92+
require_gte!(
93+
target_size,
94+
minimum_size as usize,
95+
MessageBufferError::MessageBufferTooSmall
96+
);
97+
}
98+
9699

97100
// Not transferring excess lamports back to admin.
98101
// Account will retain more lamports than necessary.

0 commit comments

Comments
 (0)