Open carpawell opened 1 month ago
Tried to cast item from contract's storage and use it.
newNodes := storage.Find(ctx, newNodesPrefix, storage.None) for iterator.Next(newNodes) { newNode := iterator.Value(newNodes).(struct { key []byte val []byte }) newNode.key[0] = 1 }
leads to SETITEM: invalid item type ByteString
SETITEM: invalid item type ByteString
newNode.key[:][0] = 1 solves the issue... why?
newNode.key[:][0] = 1
I said (asserted/converted) that it is a []byte, i want to use it as []byte.
[]byte
Ensure, cast or throw an exception at .() operator, not when it is tried to be used later.
.()
Code from Current Behavior.
Current Behavior
https://github.com/nspcc-dev/neofs-contract/pull/438#discussion_r1786975526
Not sure.
github.com/nspcc-dev/neo-go v0.106.3
Tried to cast item from contract's storage and use it.
Current Behavior
leads to
SETITEM: invalid item type ByteString
newNode.key[:][0] = 1
solves the issue... why?Expected Behavior
I said (asserted/converted) that it is a
[]byte
, i want to use it as[]byte
.Possible Solution
Ensure, cast or throw an exception at
.()
operator, not when it is tried to be used later.Steps to Reproduce
Code from
Current Behavior
.Context
https://github.com/nspcc-dev/neofs-contract/pull/438#discussion_r1786975526
Regression
Not sure.
Your Environment
github.com/nspcc-dev/neo-go v0.106.3