From 21656d18558632c51e5112d8e5e93b6ccbc6273d Mon Sep 17 00:00:00 2001 From: AnilChinchawale Date: Fri, 9 Nov 2018 10:59:55 +0530 Subject: [PATCH] fix error panic in func RemoveItemFromArray --- common/types.go | 10 +++++++++- common/types_test.go | 6 +++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/common/types.go b/common/types.go index bfaa44455f..96ff8fa7c0 100644 --- a/common/types.go +++ b/common/types.go @@ -249,12 +249,20 @@ func RemoveItemFromArray(array []Address, items []Address) []Address { if items == nil { return array } - for i, value := range array { + i := 0; + for i < len(array) { + value := array[i] + remove := false for _, item := range items { if value == item { array = append(array[:i], array[i+1:]...) + remove = true + break } } + if !remove { + i++ + } } return array } diff --git a/common/types_test.go b/common/types_test.go index 20ec76ffb0..fd90e47582 100644 --- a/common/types_test.go +++ b/common/types_test.go @@ -151,10 +151,10 @@ func BenchmarkAddressHex(b *testing.B) { } func TestRemoveItemInArray(t *testing.T) { - array := []Address{HexToAddress("0x0000000"), HexToAddress("0x0000001"), HexToAddress("0x0000002")} - remove := []Address{HexToAddress("0x0000000"), HexToAddress("0x0000004"), HexToAddress("0x0000003")} + array := []Address{HexToAddress("0x0000003"),HexToAddress("0x0000001"), HexToAddress("0x0000002"),HexToAddress("0x0000003")} + remove := []Address{HexToAddress("0x0000002"), HexToAddress("0x0000004"), HexToAddress("0x0000003")} array = RemoveItemFromArray(array, remove) - if len(array) != 2 { + if len(array) != 1 { t.Error("fail remove item from array address") } } \ No newline at end of file