neo-go/pkg/core
Anna Shaleva b030c331b0 core: copy SC storage iterator prefix while returning values
It's a bug since Prefix is shared between all iterator items and
appending is not enough. If prefix has enough capacity, then new slice
won't be created and the previous item's prefix will be changed.

This commit fixes the following test failure caused by moving from
bytes.Clone to slice.Copy:
```
 --- FAIL: TestComlileAndInvokeFunction/test_Storage.Find (0.02s)
        --- FAIL: TestComlileAndInvokeFunction/test_Storage.Find/keys_only (0.01s)
            contract_test.go:866:
                	Error Trace:	/home/anna/Documents/GitProjects/nspcc-dev/neo-go/cli/smartcontract/contract_test.go:866
                	Error:      	Not equal:
                	            	expected: []stackitem.Item{(*stackitem.ByteArray)(0xc000a1cdf8), (*stackitem.ByteArray)(0xc000a1ce10)}
                	            	actual  : []stackitem.Item{(*stackitem.ByteArray)(0xc000a1cdb0), (*stackitem.ByteArray)(0xc000a1cdc8)}

                	            	Diff:
                	            	--- Expected
                	            	+++ Actual
                	            	@@ -2,3 +2,3 @@
                	            	  (*stackitem.ByteArray)((len=8) {
                	            	-  00000000  66 69 6e 64 6b 65 79 31                           |findkey1|
                	            	+  00000000  66 69 6e 64 6b 65 79 32                           |findkey2|
                	            	  }),
                	Test:       	TestComlileAndInvokeFunction/test_Storage.Find/keys_only
        --- FAIL: TestComlileAndInvokeFunction/test_Storage.Find/both (0.01s)
            contract_test.go:881:
                	Error Trace:	/home/anna/Documents/GitProjects/nspcc-dev/neo-go/cli/smartcontract/contract_test.go:881
                	Error:      	Not equal:
                	            	expected: []stackitem.Item{(*stackitem.ByteArray)(0xc000515920), (*stackitem.ByteArray)(0xc000515938)}
                	            	actual  : []stackitem.Item{(*stackitem.ByteArray)(0xc000515848), (*stackitem.ByteArray)(0xc000515860)}

                	            	Diff:
                	            	--- Expected
                	            	+++ Actual
                	            	@@ -2,3 +2,3 @@
                	            	  (*stackitem.ByteArray)((len=8) {
                	            	-  00000000  66 69 6e 64 6b 65 79 31                           |findkey1|
                	            	+  00000000  66 69 6e 64 6b 65 79 32                           |findkey2|
                	            	  }),
                	Test:       	TestComlileAndInvokeFunction/test_Storage.Find/both
```

Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
2024-03-05 13:54:10 +03:00
..
block *: use require.ErrorIs instead of require.True(t, error.Is()) 2023-05-04 17:03:47 +03:00
chaindump *: use require.ErrorIs instead of require.True(t, error.Is()) 2023-05-04 17:03:47 +03:00
dao *: mention prefix trimming in Seek operations where applicable 2023-11-23 18:44:19 +03:00
fee vm: add ABORTMSG and ASSERTMSG opcodes 2023-08-10 12:41:30 +03:00
interop core: copy SC storage iterator prefix while returning values 2024-03-05 13:54:10 +03:00
mempool *: replace go.uber.org/atomic with sync/atomic 2023-10-12 17:59:34 +03:00
mempoolevent *: replace interface{} with any keyword 2023-04-04 13:22:42 +03:00
mpt *: use require.ErrorIs instead of require.True(t, error.Is()) 2023-05-04 17:03:47 +03:00
native native: never set Neo's newEpoch* cache values to nil 2023-12-21 17:56:07 +03:00
state core: remove UpdateHistory from NativeContract structure 2023-11-29 09:25:04 +03:00
stateroot *: replace go.uber.org/atomic with sync/atomic 2023-10-12 17:59:34 +03:00
statesync config: drop deprecated Protocol configurations 2023-10-10 13:26:07 +03:00
storage *: use multierror wrapping where possible 2024-03-05 13:54:10 +03:00
test_data core: refactor helper test contracts generation 2022-03-30 11:46:29 +03:00
transaction native: introduce attribute pricing 2023-11-21 13:42:56 +03:00
basic_chain_test.go config: add a special Blockchain type to configure Blockchain 2022-12-07 17:35:53 +03:00
bench_test.go core: make GetHeaderHash accept uint32 2022-11-25 14:30:51 +03:00
blockchain.go *: use multierror wrapping where possible 2024-03-05 13:54:10 +03:00
blockchain_core_test.go Merge pull request #3150 from nspcc-dev/drop-deprecated 2023-10-10 14:29:47 +03:00
blockchain_neotest_test.go Revert "native: ignore decoding errors during cache init" 2023-11-22 19:39:03 +03:00
doc.go *: apply go 1.19 formatter heuristics 2022-08-09 15:37:52 +03:00
headerhashes.go core: don't always store all hashes in memory 2022-11-25 14:30:51 +03:00
helper_test.go *: add GenesisTransaction extension to the protocol configuration 2023-10-19 18:33:50 +03:00
interops.go core: add System.Runtime.CurrentSigners syscall 2023-11-20 14:46:27 +03:00
native_designate_test.go *: introduce Genesis protocol configuration 2023-10-19 18:30:20 +03:00
prometheus.go core: distinguish notarypool/mempool metrics 2023-04-13 18:40:19 +03:00
util.go *: add GenesisTransaction extension to the protocol configuration 2023-10-19 18:33:50 +03:00
util_test.go *: add GenesisTransaction extension to the protocol configuration 2023-10-19 18:33:50 +03:00