diff --git a/third_party/silentdragonxlite/silentdragonxlite-cli/lib/src/lightwallet.rs b/third_party/silentdragonxlite/silentdragonxlite-cli/lib/src/lightwallet.rs index 1606e0e..5d99c71 100644 --- a/third_party/silentdragonxlite/silentdragonxlite-cli/lib/src/lightwallet.rs +++ b/third_party/silentdragonxlite/silentdragonxlite-cli/lib/src/lightwallet.rs @@ -2237,15 +2237,16 @@ pub fn scan_full_mempool_tx(&self, tx: &Transaction, height: i32, _datetime: u64 // Prepare the note witnesses for updating for tx in txs.values_mut() { for nd in tx.notes.iter_mut() { - // Duplicate the most recent witness + // Duplicate the most recent witness (nothing to do for notes with no history) if let Some(witness) = nd.witnesses.last() { let clone = witness.clone(); nd.witnesses.push(clone); + // Trim the oldest witnesses in place (no fresh Vec per note per block) + let len = nd.witnesses.len(); + if len > MAX_REORG { + nd.witnesses.drain(..len - MAX_REORG); + } } - // Trim the oldest witnesses - nd.witnesses = nd - .witnesses - .split_off(nd.witnesses.len().saturating_sub(100)); } }