diff --git a/Sources/EOSIO/ABIDecoder.swift b/Sources/EOSIO/ABIDecoder.swift index 8d894d9..9a810f6 100644 --- a/Sources/EOSIO/ABIDecoder.swift +++ b/Sources/EOSIO/ABIDecoder.swift @@ -109,7 +109,13 @@ public extension ABIDecoder { case is UInt.Type: return UInt(try self.readVaruint()) as! T case let abiType as ABIDecodable.Type: - return try abiType.init(fromAbi: self) as! T + let decodedAbiType = try abiType.init(fromAbi: self) + // Instead of forcefully casting, verify the type at runtime. + if let result = decodedAbiType as? T { + return result + } else { + throw Error.typeNotConformingToABIDecodable(type) + } default: throw Error.typeNotConformingToABIDecodable(type) }