From 6ff2c02991e60a8db54c2f60027442277fd889c0 Mon Sep 17 00:00:00 2001
From: Zsolt Felfoldi <zsfelfoldi@gmail.com>
Date: Wed, 6 Sep 2017 01:43:00 +0200
Subject: [PATCH] core/bloombits: AddBloom index parameter and fixes variable
 names

---
 core/bloombits/generator.go      | 13 ++++++++-----
 core/bloombits/generator_test.go |  2 +-
 eth/bloombits.go                 |  2 +-
 eth/filters/bench_test.go        |  2 +-
 4 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/core/bloombits/generator.go b/core/bloombits/generator.go
index 04a7f5146..540085450 100644
--- a/core/bloombits/generator.go
+++ b/core/bloombits/generator.go
@@ -49,21 +49,24 @@ func NewGenerator(sections uint) (*Generator, error) {
 
 // AddBloom takes a single bloom filter and sets the corresponding bit column
 // in memory accordingly.
-func (b *Generator) AddBloom(bloom types.Bloom) error {
+func (b *Generator) AddBloom(index uint, bloom types.Bloom) error {
 	// Make sure we're not adding more bloom filters than our capacity
 	if b.nextBit >= b.sections {
 		return errSectionOutOfBounds
 	}
+	if b.nextBit != index {
+		return errors.New("bloom filter with unexpected index")
+	}
 	// Rotate the bloom and insert into our collection
-	byteMask := b.nextBit / 8
+	byteIndex := b.nextBit / 8
 	bitMask := byte(1) << byte(7-b.nextBit%8)
 
 	for i := 0; i < types.BloomBitLength; i++ {
-		bloomByteMask := types.BloomByteLength - 1 - i/8
+		bloomByteIndex := types.BloomByteLength - 1 - i/8
 		bloomBitMask := byte(1) << byte(i%8)
 
-		if (bloom[bloomByteMask] & bloomBitMask) != 0 {
-			b.blooms[i][byteMask] |= bitMask
+		if (bloom[bloomByteIndex] & bloomBitMask) != 0 {
+			b.blooms[i][byteIndex] |= bitMask
 		}
 	}
 	b.nextBit++
diff --git a/core/bloombits/generator_test.go b/core/bloombits/generator_test.go
index f4aa9551c..f9bcef96e 100644
--- a/core/bloombits/generator_test.go
+++ b/core/bloombits/generator_test.go
@@ -44,7 +44,7 @@ func TestGenerator(t *testing.T) {
 		t.Fatalf("failed to create bloombit generator: %v", err)
 	}
 	for i, bloom := range input {
-		if err := gen.AddBloom(bloom); err != nil {
+		if err := gen.AddBloom(uint(i), bloom); err != nil {
 			t.Fatalf("bloom %d: failed to add: %v", i, err)
 		}
 	}
diff --git a/eth/bloombits.go b/eth/bloombits.go
index 02de408b0..32f6c7b31 100644
--- a/eth/bloombits.go
+++ b/eth/bloombits.go
@@ -122,7 +122,7 @@ func (b *BloomIndexer) Reset(section uint64) {
 // Process implements core.ChainIndexerBackend, adding a new header's bloom into
 // the index.
 func (b *BloomIndexer) Process(header *types.Header) {
-	b.gen.AddBloom(header.Bloom)
+	b.gen.AddBloom(uint(header.Number.Uint64()-b.section*b.size), header.Bloom)
 	b.head = header.Hash()
 }
 
diff --git a/eth/filters/bench_test.go b/eth/filters/bench_test.go
index d994378fc..abbf4593e 100644
--- a/eth/filters/bench_test.go
+++ b/eth/filters/bench_test.go
@@ -98,7 +98,7 @@ func benchmarkBloomBits(b *testing.B, sectionSize uint64) {
 			if header == nil {
 				b.Fatalf("Error creating bloomBits data")
 			}
-			bc.AddBloom(header.Bloom)
+			bc.AddBloom(uint(i-sectionIdx*sectionSize), header.Bloom)
 		}
 		sectionHead := core.GetCanonicalHash(db, (sectionIdx+1)*sectionSize-1)
 		for i := 0; i < types.BloomBitLength; i++ {
-- 
GitLab