Skip to content

Commit d9d0dce

Browse files
Global Variable Fix
global variable fix on building blocklist filter to get rid of 'fatal error: concurrent map writes'
1 parent 82d11a9 commit d9d0dce

4 files changed

Lines changed: 27 additions & 14 deletions

File tree

main.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,21 @@ import (
1515
//import "strings"
1616

1717
func main() {
18+
mychannel := make(chan bool)
19+
go loadbuild(mychannel)
20+
go loadbuild(mychannel)
21+
go loadbuild(mychannel)
22+
go loadbuild(mychannel)
23+
go loadbuild(mychannel)
24+
<-mychannel
25+
<-mychannel
26+
<-mychannel
27+
<-mychannel
28+
<-mychannel
29+
}
30+
1831

32+
func loadbuild(mychannel chan bool){
1933
err, FT := trie.Build("./td", "./rank", "./basicconfig", "./blocklists")
2034
if err == nil {
2135
//[33216 32768 8192 256 4]
@@ -92,9 +106,8 @@ func main() {
92106
if err := pprof.WriteHeapProfile(f); err != nil {
93107
fmt.Println("could not write memory profile: ", err)
94108
}
95-
109+
mychannel <- true
96110
}
97-
98111
func PrintMemUsage() {
99112
var m runtime.MemStats
100113
runtime.ReadMemStats(&m)

trie/build.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@ import "strings"
1111
import "encoding/json"
1212

1313
var Debug = false
14-
var RD = RankDirectory{}
15-
var FT = FrozenTrie{}
16-
var RD_buf = []uint16{}
17-
var TD_buf = []uint16{}
18-
var Blacklistconfigjson = "./filetag.json"
1914
var W = 16
2015
var L1 = 32 * 32
2116
var L2 = 32
22-
var NodeCount *int
2317

2418
func Build(tdpath, rdpath, bcpath, ftpath string) (error, FrozenTrie) {
2519
// FIXME: add an integrity check for all four files which are
2620
// dependant on each other and need to be from the same "generation"
21+
var RD = RankDirectory{}
22+
var FT = FrozenTrie{}
23+
var RD_buf = []uint16{}
24+
var TD_buf = []uint16{}
25+
26+
var NodeCount *int
2727
var err error
28-
Blacklistconfigjson = string(ftpath)
28+
//Blacklistconfigjson = string(ftpath)
2929
TD_buf, err = read_file_u16(tdpath)
3030
if err != nil {
3131
fmt.Println(err)
@@ -48,7 +48,7 @@ func Build(tdpath, rdpath, bcpath, ftpath string) (error, FrozenTrie) {
4848
RD.Init(RD_buf, TD_buf, *NodeCount*2+1, L1, L2, nil)
4949
//RD.display()
5050
FT.Init(TD_buf, RD, *NodeCount)
51-
FT.LoadTag()
51+
FT.LoadTag(string(ftpath))
5252
//LoadNodecount_BasicConfig("./basicconfig.json")
5353

5454
/*

trie/frozentrie.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -310,8 +310,8 @@ func (FT *FrozenTrie) lookup(word []uint8) (bool, []uint32) {
310310
return false, emptyreturn
311311
}
312312

313-
func (FT *FrozenTrie) LoadTag() error {
314-
data, err := ioutil.ReadFile(Blacklistconfigjson)
313+
func (FT *FrozenTrie) LoadTag(filepath string) error {
314+
data, err := ioutil.ReadFile(filepath)
315315
if err != nil {
316316
fmt.Print(err)
317317
return err
@@ -585,7 +585,7 @@ func (FT *FrozenTrie) decode(stamp string, ver string) (tags []string, err error
585585
return FT.flagstotag(u16)
586586
}
587587

588-
func (ft *FrozenTrie) flagstotag(flags []uint16) ([]string, error) {
588+
func (FT *FrozenTrie) flagstotag(flags []uint16) ([]string, error) {
589589
// flags has to be an array of 16-bit integers.
590590

591591
// first index always contains the header

trie/readtag.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"strings"
1010
)
1111

12-
func CheckDN() {
12+
func CheckDN(FT *FrozenTrie) {
1313
var a [1]string
1414
a[0] = "D:\\Celzero\\blocklist script\\blocklistfiles\\privacy\\MNH.txt"
1515
//a[0] = "D:\\Celzero\\blocklist script\\blocklistfiles\\privacy\\NLH.txt"

0 commit comments

Comments
 (0)