Skip to content

Commit dc79591

Browse files
committed
Fixing nil dereference on empty vertical/horizontal columns with CrosstabView
1 parent 640b8fa commit dc79591

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

opts.go

+4
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,10 @@ func WithEmpty(empty string) Option {
371371
enc.empty = encode(enc.formatter)
372372
return nil
373373
},
374+
crosstab: func(enc *CrosstabView) error {
375+
enc.empty = encode(enc.formatter)
376+
return nil
377+
},
374378
}
375379
}
376380

view.go

+11
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ type CrosstabView struct {
2020
resultSet ResultSet
2121
// formatter is the formatter.
2222
formatter Formatter
23+
// empty is the empty value.
24+
empty *Value
2325
// v is the vertical header column.
2426
v string
2527
// h is the horizontal header column.
@@ -45,6 +47,9 @@ func NewCrosstabView(resultSet ResultSet, opts ...Option) (ResultSet, error) {
4547
view := &CrosstabView{
4648
resultSet: resultSet,
4749
formatter: NewEscapeFormatter(WithIsRaw(true, 0, 0)),
50+
empty: &Value{
51+
Tabs: make([][][2]int, 1),
52+
},
4853
}
4954
for _, o := range opts {
5055
if err := o.apply(view); err != nil {
@@ -166,6 +171,12 @@ func (view *CrosstabView) fail(err error) error {
166171

167172
// add processes and adds a val.
168173
func (view *CrosstabView) add(d interface{}, v, h, s *Value) error {
174+
if v == nil {
175+
v = view.empty
176+
}
177+
if h == nil {
178+
h = view.empty
179+
}
169180
// determine sort value
170181
var sval int
171182
if s != nil {

0 commit comments

Comments
 (0)