aboutsummaryrefslogtreecommitdiff
path: root/bencode
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-06-21 16:43:43 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-06-21 16:43:43 +0200
commit370eb2d2a63d60582d9cfa9719a082b6f0333316 (patch)
tree15c4abf8f36993ed036eb4278e3a4f262b163827 /bencode
parent7f474211bf54b66fe51dd9ce2d3e3f2c94b6d81e (diff)
More time
Diffstat (limited to 'bencode')
-rw-r--r--bencode/bencode.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/bencode/bencode.go b/bencode/bencode.go
index a98eac4..80b2ed3 100644
--- a/bencode/bencode.go
+++ b/bencode/bencode.go
@@ -55,7 +55,11 @@ func isEmpty(v reflect.Value) bool {
return v.Int() == 0
case reflect.String, reflect.Slice:
return v.Len() == 0
- case reflect.Interface, reflect.Ptr:
+ case reflect.Interface:
+ if t, ok := v.Interface().(time.Time); ok {
+ return t.IsZero()
+ }
+ case reflect.Ptr:
return v.IsNil()
}
return false
@@ -269,6 +273,11 @@ func (d *decodeState) unmarshalInt(v reflect.Value) error {
d.off += n
if v.CanSet() {
switch v.Interface().(type) {
+ case *time.Time:
+ t := time.Unix(i, 0)
+ nv := reflect.New(v.Type())
+ nv.Elem().Set(reflect.ValueOf(&t))
+ v.Set(nv.Elem())
case time.Time:
t := time.Unix(i, 0)
v.Set(reflect.ValueOf(t))