The function sort be sorting the uintptr itself, not the address of it. Also, the previous code could easily panic on an unaddressable reflect.Value since it was trying to take an address.
@@ -284,7 +284,7 @@ func (s *valuesSorter) Less(i, j int) bool {
case reflect.String:
return s.values[i].String() < s.values[j].String()
case reflect.Uintptr:
- return s.values[i].UnsafeAddr() < s.values[j].UnsafeAddr()
+ return s.values[i].Uint() < s.values[j].Uint()
}