From 47e8704be61e07703c247716c7f48d25eb64427b Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 28 Jun 2016 20:50:58 +0200 Subject: Don't panic --- bitfield/bitfield.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'bitfield/bitfield.go') diff --git a/bitfield/bitfield.go b/bitfield/bitfield.go index 2346a2c..da4d4d8 100644 --- a/bitfield/bitfield.go +++ b/bitfield/bitfield.go @@ -13,26 +13,24 @@ func New(n int) BitField { func (b BitField) At(i int) bool { x := i / 8 y := 7 - uint(i%8) - if x < 0 || x > len(b) { - panic("out of range") + if x >= 0 && x < len(b) { + return (int(b[x]>>y) & 1) == 1 } - return (int(b[x]>>y) & 1) == 1 + return false } func (b BitField) Set(i int) { x := i / 8 y := 7 - uint(i%8) - if x < 0 || x > len(b) { - panic("out of range") + if x >= 0 && x < len(b) { + b[x] |= 1 << y } - b[x] |= 1 << y } func (b BitField) Clear(i int) { x := i / 8 y := 7 - uint(i%8) - if x < 0 || x > len(b) { - panic("out of range") + if x >= 0 && x < len(b) { + b[x] &= ^(1 << y) } - b[x] &= ^(1 << y) } -- cgit v1.2.3