diff --git a/data/ip2region.xdb b/data/ip2region.xdb index e823a6c..e9e125e 100644 Binary files a/data/ip2region.xdb and b/data/ip2region.xdb differ diff --git a/maker/golang/main.go b/maker/golang/main.go index 329ee34..f2cf866 100644 --- a/maker/golang/main.go +++ b/maker/golang/main.go @@ -69,22 +69,25 @@ func genDb() { tStart := time.Now() maker, err := xdb.NewMaker(indexPolicy, srcFile, dstFile) if err != nil { - log.Fatalf("failed to create maker: %s", err) + fmt.Printf("failed to create %s\n", err) + return } err = maker.Init() if err != nil { - log.Fatalf("failed Init: %s", err) + fmt.Printf("failed Init: %s\n", err) + return } err = maker.Start() if err != nil { - log.Fatalf("failed Start: %s", err) + fmt.Printf("failed Start: %s\n", err) + return } err = maker.End() if err != nil { - log.Fatalf("failed End: %s", err) + fmt.Printf("failed End: %s\n", err) } log.Printf("Done, elapsed: %s\n", time.Since(tStart)) @@ -124,7 +127,8 @@ func testSearch() { searcher, err := xdb.NewSearcher(dbFile) if err != nil { - log.Fatalf("failed to create searcher: %s", err.Error()) + fmt.Printf("failed to create searcher with `%s`: %s\n", dbFile, err.Error()) + return } defer func() { searcher.Close() @@ -228,6 +232,10 @@ func testBench() { } searcher, err := xdb.NewSearcher(dbFile) + if err != nil { + fmt.Printf("failed to create searcher with `%s`: %s\n", dbFile, err) + return + } defer func() { searcher.Close() }() diff --git a/maker/golang/xdb/maker.go b/maker/golang/xdb/maker.go index d71b596..841cd57 100644 --- a/maker/golang/xdb/maker.go +++ b/maker/golang/xdb/maker.go @@ -115,16 +115,16 @@ func (m *Maker) initDbHeader() error { binary.LittleEndian.PutUint16(header, uint16(VersionNo)) // 2, index policy code - binary.LittleEndian.PutUint16(header, uint16(m.indexPolicy)) + binary.LittleEndian.PutUint16(header[2:], uint16(m.indexPolicy)) // 3, generate unix timestamp - binary.LittleEndian.PutUint32(header[2:], uint32(time.Now().Unix())) + binary.LittleEndian.PutUint32(header[4:], uint32(time.Now().Unix())) // 4, index block start ptr - binary.LittleEndian.PutUint32(header[6:], uint32(0)) + binary.LittleEndian.PutUint32(header[8:], uint32(0)) // 5, index block end ptr - binary.LittleEndian.PutUint32(header[10:], uint32(0)) + binary.LittleEndian.PutUint32(header[12:], uint32(0)) _, err = m.dstHandle.Write(header) if err != nil { diff --git a/maker/golang/xdb/searcher.go b/maker/golang/xdb/searcher.go index 0d5ca00..ed4d0f7 100644 --- a/maker/golang/xdb/searcher.go +++ b/maker/golang/xdb/searcher.go @@ -43,9 +43,11 @@ func NewSearcher(dbFile string) (*Searcher, error) { } func (s *Searcher) Close() { - err := s.handle.Close() - if err != nil { - return + if s.handle != nil { + err := s.handle.Close() + if err != nil { + return + } } }