Skip to content

Commit 2c7523e

Browse files
committed
fix nil dereference panic when receiving nil *time.Time
1 parent de03a35 commit 2c7523e

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

bson/encode.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,8 @@ func NewDocumentEncoder() DocumentEncoder {
122122
return &encoder{}
123123
}
124124

125-
func convertTimeToInt64(t time.Time) int64 {
125+
func convertTimeToInt64(t *time.Time) int64 {
126+
if t == nil { return 0 }
126127
return t.Unix()*1000 + int64(t.Nanosecond()/1e6)
127128
}
128129

@@ -442,10 +443,10 @@ func (e *encoder) encodeSliceAsArray(rval reflect.Value, minsize bool) ([]*Value
442443
vals = append(vals, VC.Decimal128(t))
443444
continue
444445
case time.Time:
445-
vals = append(vals, VC.DateTime(convertTimeToInt64(t)))
446+
vals = append(vals, VC.DateTime(convertTimeToInt64(&t)))
446447
continue
447448
case *time.Time:
448-
vals = append(vals, VC.DateTime(convertTimeToInt64(*t)))
449+
vals = append(vals, VC.DateTime(convertTimeToInt64(t)))
449450
continue
450451
}
451452

@@ -528,10 +529,10 @@ func (e *encoder) encodeStruct(val reflect.Value) ([]*Element, error) {
528529
elems = append(elems, EC.Decimal128(key, t))
529530
continue
530531
case time.Time:
531-
elems = append(elems, EC.DateTime(key, convertTimeToInt64(t)))
532+
elems = append(elems, EC.DateTime(key, convertTimeToInt64(&t)))
532533
continue
533534
case *time.Time:
534-
elems = append(elems, EC.DateTime(key, convertTimeToInt64(*t)))
535+
elems = append(elems, EC.DateTime(key, convertTimeToInt64(t)))
535536
continue
536537
}
537538
field = e.underlyingVal(field)

0 commit comments

Comments
 (0)