From 654458a96f2775bff45271facd07013ee7d18902 Mon Sep 17 00:00:00 2001 From: fluidvanadium Date: Mon, 23 Sep 2024 00:53:03 +0000 Subject: [PATCH] this code contained some assumptions (not good) that caused a thread panic. minimal sane fix --- .../src/wallet/transaction_records_by_id.rs | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/zingolib/src/wallet/transaction_records_by_id.rs b/zingolib/src/wallet/transaction_records_by_id.rs index 5acc66311..f4dd9912d 100644 --- a/zingolib/src/wallet/transaction_records_by_id.rs +++ b/zingolib/src/wallet/transaction_records_by_id.rs @@ -280,18 +280,17 @@ impl TransactionRecordsById { spending_txid: TxId, spend_status: Option<(TxId, ConfirmationStatus)>, ) { - let spending_tx = self - .get(&spending_txid) - .expect("transaction must exist in wallet"); - let orchard_nullifiers = spending_tx.spent_orchard_nullifiers.clone(); - let sapling_nullifiers = spending_tx.spent_sapling_nullifiers.clone(); - - orchard_nullifiers - .iter() - .for_each(|nf| self.update_orchard_note_spend_status(nf, spend_status)); - sapling_nullifiers - .iter() - .for_each(|nf| self.update_sapling_note_spend_status(nf, spend_status)); + if let Some(spending_tx) = self.get(&spending_txid) { + let orchard_nullifiers = spending_tx.spent_orchard_nullifiers.clone(); + let sapling_nullifiers = spending_tx.spent_sapling_nullifiers.clone(); + + orchard_nullifiers + .iter() + .for_each(|nf| self.update_orchard_note_spend_status(nf, spend_status)); + sapling_nullifiers + .iter() + .for_each(|nf| self.update_sapling_note_spend_status(nf, spend_status)); + } } fn find_sapling_spend(&self, nullifier: &sapling_crypto::Nullifier) -> Option<&SaplingNote> {