Skip to content

Commit d09cc15

Browse files
cthom06hoisie
authored andcommitted
Update for changes in reflect package
1 parent 8285621 commit d09cc15

File tree

1 file changed

+12
-93
lines changed

1 file changed

+12
-93
lines changed

redis.go

+12-93
Original file line numberDiff line numberDiff line change
@@ -931,42 +931,29 @@ func valueToString(v reflect.Value) (string, os.Error) {
931931
}
932932

933933
case *reflect.IntValue:
934-
return strconv.Itoa(v.Get()), nil
935-
case *reflect.Int8Value:
936-
return strconv.Itoa(int(v.Get())), nil
937-
case *reflect.Int16Value:
938-
return strconv.Itoa(int(v.Get())), nil
939-
case *reflect.Int32Value:
940-
return strconv.Itoa(int(v.Get())), nil
941-
case *reflect.Int64Value:
942934
return strconv.Itoa64(v.Get()), nil
943-
944935
case *reflect.UintValue:
945-
return strconv.Uitoa(v.Get()), nil
946-
case *reflect.Uint8Value:
947-
return strconv.Uitoa(uint(v.Get())), nil
948-
case *reflect.Uint16Value:
949-
return strconv.Uitoa(uint(v.Get())), nil
950-
case *reflect.Uint32Value:
951-
return strconv.Uitoa(uint(v.Get())), nil
952-
case *reflect.Uint64Value:
953936
return strconv.Uitoa64(v.Get()), nil
954-
case *reflect.UintptrValue:
937+
case *reflect.UnsafePointerValue:
955938
return strconv.Uitoa64(uint64(v.Get())), nil
956939

957940
case *reflect.FloatValue:
958-
return strconv.Ftoa(v.Get(), 'g', -1), nil
959-
case *reflect.Float32Value:
960-
return strconv.Ftoa32(v.Get(), 'g', -1), nil
961-
case *reflect.Float64Value:
962941
return strconv.Ftoa64(v.Get(), 'g', -1), nil
963942

964943
case *reflect.StringValue:
965944
return v.Get(), nil
945+
946+
//This is kind of a rough hack to replace the old []byte
947+
//detection with reflect.Uint8Type, it doesn't catch
948+
//zero-length byte slices
966949
case *reflect.SliceValue:
967950
typ := v.Type().(*reflect.SliceType)
968-
if _, ok := typ.Elem().(*reflect.Uint8Type); ok {
969-
return string(v.Interface().([]byte)), nil
951+
if _, ok := typ.Elem().(*reflect.UintType); ok {
952+
if v.Len() > 0 {
953+
if v.Elem(1).(*reflect.UintValue).Overflow(257) {
954+
return string(v.Interface().([]byte)), nil
955+
}
956+
}
970957
}
971958
}
972959
return "", os.NewError("Unsupported type")
@@ -1093,86 +1080,18 @@ func writeTo(data []byte, val reflect.Value) os.Error {
10931080
}
10941081
v.Set(b)
10951082
case *reflect.IntValue:
1096-
i, err := strconv.Atoi(s)
1097-
if err != nil {
1098-
return err
1099-
}
1100-
v.Set(i)
1101-
case *reflect.Int8Value:
1102-
i, err := strconv.Atoi(s)
1103-
if err != nil {
1104-
return err
1105-
}
1106-
v.Set(int8(i))
1107-
case *reflect.Int16Value:
1108-
i, err := strconv.Atoi(s)
1109-
if err != nil {
1110-
return err
1111-
}
1112-
v.Set(int16(i))
1113-
case *reflect.Int32Value:
1114-
i, err := strconv.Atoi(s)
1115-
if err != nil {
1116-
return err
1117-
}
1118-
v.Set(int32(i))
1119-
case *reflect.Int64Value:
11201083
i, err := strconv.Atoi64(s)
11211084
if err != nil {
11221085
return err
11231086
}
11241087
v.Set(i)
11251088
case *reflect.UintValue:
1126-
ui, err := strconv.Atoui(s)
1127-
if err != nil {
1128-
return err
1129-
}
1130-
v.Set(ui)
1131-
1132-
case *reflect.Uint8Value:
1133-
ui, err := strconv.Atoui(s)
1134-
if err != nil {
1135-
return err
1136-
}
1137-
v.Set(uint8(ui))
1138-
case *reflect.Uint16Value:
1139-
ui, err := strconv.Atoui(s)
1140-
if err != nil {
1141-
return err
1142-
}
1143-
v.Set(uint16(ui))
1144-
case *reflect.Uint32Value:
1145-
ui, err := strconv.Atoui(s)
1146-
if err != nil {
1147-
return err
1148-
}
1149-
v.Set(uint32(ui))
1150-
case *reflect.Uint64Value:
11511089
ui, err := strconv.Atoui64(s)
11521090
if err != nil {
11531091
return err
11541092
}
11551093
v.Set(ui)
1156-
case *reflect.UintptrValue:
1157-
ui, err := strconv.Atoui64(s)
1158-
if err != nil {
1159-
return err
1160-
}
1161-
v.Set(uintptr(ui))
11621094
case *reflect.FloatValue:
1163-
f, err := strconv.Atof(s)
1164-
if err != nil {
1165-
return err
1166-
}
1167-
v.Set(f)
1168-
1169-
case *reflect.Float32Value:
1170-
f, err := strconv.Atof32(s)
1171-
if err != nil {
1172-
return err
1173-
}
1174-
v.Set(f)
1175-
case *reflect.Float64Value:
11761095
f, err := strconv.Atof64(s)
11771096
if err != nil {
11781097
return err
@@ -1183,7 +1102,7 @@ func writeTo(data []byte, val reflect.Value) os.Error {
11831102
v.Set(s)
11841103
case *reflect.SliceValue:
11851104
typ := v.Type().(*reflect.SliceType)
1186-
if _, ok := typ.Elem().(*reflect.Uint8Type); ok {
1105+
if _, ok := typ.Elem().(*reflect.UintType); ok {
11871106
v.Set(reflect.NewValue(data).(*reflect.SliceValue))
11881107
}
11891108
}

0 commit comments

Comments
 (0)