1
0
mirror of https://bitbucket.org/s_l_teichmann/mtsatellite synced 2025-07-15 14:30:32 +02:00

Before Go 1.7 there is an extra offset needed to decode blocks correctly

after the embedded compressed data. In post 1.7 this bug was fixed.
We use build tags here to support both cases.
This commit is contained in:
Sascha L. Teichmann
2016-04-08 23:40:36 +02:00
parent 955dfdf4bb
commit b5f531b0ba
3 changed files with 26 additions and 1 deletions

@ -137,7 +137,12 @@ func NewDecodedBlock(data []byte, colors *Colors) (db *DecodedBlock, err error)
return return
} }
offset += buf.Pos + 4 // There is a bug before Go 1.7 that enforces
// to add 4 as an offset after the compressed
// geometry data. This is resolved via build tags
// and definitions in pre17offset.go and
// post17offset.go.
offset += buf.Pos + afterCompressOfs
buf.Pos = 0 buf.Pos = 0
if offset >= dataLen { if offset >= dataLen {
return nil, ErrBlockTruncated return nil, ErrBlockTruncated

10
common/post17offset.go Normal file

@ -0,0 +1,10 @@
// Copyright 2016 by Sascha L. Teichmann
// Use of this source code is governed by the MIT license
// that can be found in the LICENSE file.
// +build go1.7
package common
// afterCompressOfs is not necessary after Go 1.7.
const afterCompressOfs = 0

10
common/pre17offset.go Normal file

@ -0,0 +1,10 @@
// Copyright 2016 by Sascha L. Teichmann
// Use of this source code is governed by the MIT license
// that can be found in the LICENSE file.
// +build !go1.7
package common
// afterCompressOfs is necessary before Go 1.7.
const afterCompressOfs = 4