summaryrefslogtreecommitdiff
path: root/vendor/github.com/gocarina/gocsv/encode.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/gocarina/gocsv/encode.go')
-rw-r--r--vendor/github.com/gocarina/gocsv/encode.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/vendor/github.com/gocarina/gocsv/encode.go b/vendor/github.com/gocarina/gocsv/encode.go
index 7a41f9f..8671533 100644
--- a/vendor/github.com/gocarina/gocsv/encode.go
+++ b/vendor/github.com/gocarina/gocsv/encode.go
@@ -133,7 +133,15 @@ func ensureInInnerType(outInnerType reflect.Type) error {
func getInnerField(outInner reflect.Value, outInnerWasPointer bool, index []int) (string, error) {
oi := outInner
if outInnerWasPointer {
+ if oi.IsNil() {
+ return "", nil
+ }
oi = outInner.Elem()
}
+ // because pointers can be nil need to recurse one index at a time and perform nil check
+ if len(index) > 1 {
+ nextField := oi.Field(index[0])
+ return getInnerField(nextField, nextField.Kind() == reflect.Ptr, index[1:])
+ }
return getFieldAsString(oi.FieldByIndex(index))
}