Skip to content

Commit 7bbdb19

Browse files
authored
Merge pull request #5 from maclav3/patch-1
Check if field can be nil before calling IsNil()
2 parents 9f855fa + e754f0c commit 7bbdb19

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

render.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,15 @@ func RenderList(w http.ResponseWriter, r *http.Request, l []Renderer) error {
4444
return nil
4545
}
4646

47+
func isNil(f reflect.Value) bool {
48+
switch f.Kind() {
49+
case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:
50+
return f.IsNil()
51+
default:
52+
return false
53+
}
54+
}
55+
4756
// Executed top-down
4857
func renderer(w http.ResponseWriter, r *http.Request, v Renderer) error {
4958
rv := reflect.ValueOf(v)
@@ -66,7 +75,7 @@ func renderer(w http.ResponseWriter, r *http.Request, v Renderer) error {
6675
f := rv.Field(i)
6776
if f.Type().Implements(rendererType) {
6877

69-
if f.IsNil() {
78+
if isNil(f) {
7079
continue
7180
}
7281

@@ -98,7 +107,7 @@ func binder(r *http.Request, v Binder) error {
98107
f := rv.Field(i)
99108
if f.Type().Implements(binderType) {
100109

101-
if f.IsNil() {
110+
if isNil(f) {
102111
continue
103112
}
104113

0 commit comments

Comments
 (0)