Skip to content

Commit f174289

Browse files
committed
Wrap errors when decoding map values
This adds the key name, in particular, which can make it much easier to understand which field has an issue.
1 parent e970a48 commit f174289

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

decoder.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package maxminddb
22

33
import (
44
"encoding/binary"
5+
"fmt"
56
"math"
67
"math/big"
78
"reflect"
@@ -615,7 +616,7 @@ func (d *decoder) decodeMap(
615616

616617
offset, err = d.decode(offset, elemValue, depth)
617618
if err != nil {
618-
return 0, err
619+
return 0, fmt.Errorf("decoding value for %s: %w", key, err)
619620
}
620621

621622
keyValue.SetString(string(key))
@@ -772,7 +773,7 @@ func (d *decoder) decodeStruct(
772773

773774
offset, err = d.decode(offset, result.Field(j), depth)
774775
if err != nil {
775-
return 0, err
776+
return 0, fmt.Errorf("decoding value for %s: %w", key, err)
776777
}
777778
}
778779
return offset, nil

reader_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ func TestBrokenDoubleDatabase(t *testing.T) {
594594
expected := newInvalidDatabaseError(
595595
"the MaxMind DB file's data section contains bad data (float 64 size of 2)",
596596
)
597-
assert.Equal(t, expected, err)
597+
assert.ErrorAs(t, err, &expected)
598598
assert.NoError(t, reader.Close(), "error on close")
599599
}
600600

0 commit comments

Comments
 (0)