From e97d49170bfc925977880c2b1feaf3afcc460ce6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Sun, 26 Jul 2020 21:22:35 +0200 Subject: [PATCH] Fix storage_append (#158) --- .../runtime/src/validate_block/implementation.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cumulus/runtime/src/validate_block/implementation.rs b/cumulus/runtime/src/validate_block/implementation.rs index 746f06647f..1f66b6279f 100644 --- a/cumulus/runtime/src/validate_block/implementation.rs +++ b/cumulus/runtime/src/validate_block/implementation.rs @@ -264,7 +264,18 @@ impl Storage for WitnessStorage { fn storage_append(&mut self, key: &[u8], value: Vec) { let value_vec = sp_std::vec![EncodeOpaqueValue(value)]; - let current_value = self.overlay.entry(key.to_vec()).or_default(); + + let overlay = &mut self.overlay; + let witness_data = &self.witness_data; + let storage_root = &self.storage_root; + + let current_value = overlay.entry(key.to_vec()).or_insert_with(|| + read_trie_value::>, _>( + witness_data, + storage_root, + key, + ).ok().flatten() + ); let item = current_value.take().unwrap_or_default(); *current_value = Some(