mirror of
https://github.com/msgpack/msgpack-python.git
synced 2026-02-07 18:29:53 +00:00
Fix: InterfaceValue wasnt' correctly unwrapped when passed to PackValue()
This commit is contained in:
parent
5b544248bc
commit
0e82278cd5
1 changed files with 7 additions and 1 deletions
|
|
@ -521,7 +521,7 @@ func PackMap(writer io.Writer, value *reflect.MapValue) (n int, err os.Error) {
|
|||
}
|
||||
|
||||
func PackValue(writer io.Writer, value reflect.Value) (n int, err os.Error) {
|
||||
if value.Type() == nil { return PackNil(writer) }
|
||||
if value == nil || value.Type() == nil { return PackNil(writer) }
|
||||
switch _value := value.(type) {
|
||||
case *reflect.BoolValue: return PackBool(writer, _value.Get())
|
||||
case *reflect.UintValue: return PackUint64(writer, _value.Get())
|
||||
|
|
@ -530,6 +530,12 @@ func PackValue(writer io.Writer, value reflect.Value) (n int, err os.Error) {
|
|||
case *reflect.ArrayValue: return PackArray(writer, _value)
|
||||
case *reflect.SliceValue: return PackArray(writer, _value)
|
||||
case *reflect.MapValue: return PackMap(writer, _value)
|
||||
case *reflect.InterfaceValue:
|
||||
__value := reflect.NewValue(_value.Interface())
|
||||
_, ok := __value.(*reflect.InterfaceValue)
|
||||
if !ok {
|
||||
return PackValue(writer, __value)
|
||||
}
|
||||
}
|
||||
panic("unsupported type: " + value.Type().String())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue