diff --git a/src/crypto/sealed.rs b/src/crypto/sealed.rs index 15bc63db..22a85d03 100644 --- a/src/crypto/sealed.rs +++ b/src/crypto/sealed.rs @@ -109,13 +109,15 @@ impl SealedTableEntry { } let decrypted = async_map_somes(decryptable_items, |items| cipher.decrypt(items)).await?; + let mut chunks_exact = decrypted.chunks_exact(protected_attributes.len()); + let mut default_iter = + std::iter::repeat_with::<&[Option], _>(|| &[]).take(plaintext_items.len()); let decrypted_iter: &mut dyn Iterator<Item = &[Option<Plaintext>]> = if protected_attributes.len() > 0 { - &mut decrypted.chunks_exact(protected_attributes.len()) + &mut chunks_exact } else { - &mut std::iter::repeat_with::<&[Option<Plaintext>], _>(|| &[]) - .take(plaintext_items.len()) + &mut default_iter }; let unsealed = decrypted_iter