Skip to content

Commit e33de2e

Browse files
committed
- ABIDecoding getting data slice in followTheData changed to using start data index
1 parent 2357868 commit e33de2e

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

Sources/Web3Core/EthereumABI/ABIDecoding.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,12 +188,12 @@ extension ABIDecoder {
188188
fileprivate static func followTheData(type: ABI.Element.ParameterType, data: Data, pointer: UInt64 = 0) -> (elementEncoding: Data?, nextElementPointer: UInt64?) {
189189
if type.isStatic {
190190
guard data.count >= pointer + type.memoryUsage else {return (nil, nil)}
191-
let elementItself = data[pointer ..< pointer + type.memoryUsage]
191+
let elementItself = data[data.indices.startIndex + Int(pointer) ..< data.indices.startIndex + Int(pointer + type.memoryUsage)]
192192
let nextElement = pointer + type.memoryUsage
193193
return (Data(elementItself), nextElement)
194194
} else {
195195
guard data.count >= pointer + type.memoryUsage else {return (nil, nil)}
196-
let dataSlice = data[pointer ..< pointer + type.memoryUsage]
196+
let dataSlice = data[data.indices.startIndex + Int(pointer) ..< data.indices.startIndex + Int(pointer + type.memoryUsage)]
197197
let bn = BigUInt(dataSlice)
198198
if bn > UInt64.max || bn >= data.count {
199199
// there are ERC20 contracts that use bytes32 instead of string. Let's be optimistic and return some data

0 commit comments

Comments
 (0)