[swift-users] abs() Bug?

Jens Persson jens at bitcycle.com
Tue Dec 12 16:03:13 CST 2017


They all crash when I test it with Xcode 9.2 (default toolchain and dev
snapshot 2017-12-09, command line app), in what environment are you seeing
the non-crashing behavior?

My guess is that all of them crashing is the intended behavior, since the
operations result in an overflow..

/Jens

On Tue, Dec 12, 2017 at 9:06 PM, C. Keith Ray via swift-users <
swift-users at swift.org> wrote:

> Should these be consistent?
>
> All crashing or none crashing?
>
> print(abs(Int8.min)) // crash
>
> print(abs(Int16.min)) // crash
>
> print(abs(Int32.min)) // prints -2147483648
>
> print(abs(Int64.min)) // crash
>
> Should this be reported by Radar or another mechanism?
>
> I'm using this as a replacement:
>
> func safeAbs<T: SignedInteger & FixedWidthInteger>(_ i: T) -> T {
>     if i >= 0 {
>         return i
>     } else if i == T.min { // can't negate this value
>         // return i   // unconverted, violates postcondition,
> assert(result >= 0)
>         // return 0   // or return an arbitrary "safe" value
>         return -(1+i) // or return approximately the right value
>     } else {
>         return -i
>     }
> }
>
> print(safeAbs(Int8.min)) // prints *127 *
> print(safeAbs(Int16.min)) // prints 32767
> print(safeAbs(Int32.min)) // prints 2147483647
> print(safeAbs(Int64.min)) // prints 9223372036854775807
>
>
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20171212/76ff8979/attachment.html>


More information about the swift-users mailing list