Skip to content

Commit 6aa157b

Browse files
author
roman.tarasov
committed
encode nils directly instead of using encoders
1 parent f8b5232 commit 6aa157b

File tree

1 file changed

+30
-25
lines changed

1 file changed

+30
-25
lines changed

bson/bsoncodec/default_value_encoders.go

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -309,19 +309,21 @@ func (dve DefaultValueEncoders) ArrayEncodeValue(ec EncodeContext, vw bsonrw.Val
309309
return err
310310
}
311311

312-
ve := e.Value
313-
if reflect.TypeOf(ve) == nil {
314-
ve = primitive.Null{}
315-
}
316-
317-
encoder, err := ec.LookupEncoder(reflect.TypeOf(ve))
318-
if err != nil {
319-
return err
320-
}
321-
322-
err = encoder.EncodeValue(ec, vw, reflect.ValueOf(ve))
323-
if err != nil {
324-
return err
312+
if e.Value == nil {
313+
err = vw.WriteNull()
314+
if err != nil {
315+
return err
316+
}
317+
} else {
318+
encoder, err := ec.LookupEncoder(reflect.TypeOf(e.Value))
319+
if err != nil {
320+
return err
321+
}
322+
323+
err = encoder.EncodeValue(ec, vw, reflect.ValueOf(e.Value))
324+
if err != nil {
325+
return err
326+
}
325327
}
326328
}
327329

@@ -377,18 +379,21 @@ func (dve DefaultValueEncoders) SliceEncodeValue(ec EncodeContext, vw bsonrw.Val
377379
return err
378380
}
379381

380-
ve := e.Value
381-
if reflect.TypeOf(ve) == nil {
382-
ve = primitive.Null{}
383-
}
384-
encoder, err := ec.LookupEncoder(reflect.TypeOf(ve))
385-
if err != nil {
386-
return err
387-
}
388-
389-
err = encoder.EncodeValue(ec, vw, reflect.ValueOf(ve))
390-
if err != nil {
391-
return err
382+
if e.Value == nil {
383+
err = vw.WriteNull()
384+
if err != nil {
385+
return err
386+
}
387+
} else {
388+
encoder, err := ec.LookupEncoder(reflect.TypeOf(e.Value))
389+
if err != nil {
390+
return err
391+
}
392+
393+
err = encoder.EncodeValue(ec, vw, reflect.ValueOf(e.Value))
394+
if err != nil {
395+
return err
396+
}
392397
}
393398
}
394399

0 commit comments

Comments
 (0)