primitive value overflow
luka8088
luka8088 at owave.net
Thu May 16 13:24:30 PDT 2013
Hello everyone.
Today I ran into a interesting issue. I wrote
auto offset = text1.length - text2.length;
and in case text2 was longer then text1 I got something around 4294967291.
So I opened an issue:
http://d.puremagic.com/issues/show_bug.cgi?id=10093
I know that there is a perfectly valid reason for this behavior, and
that this behavior is not undefined, but it is unexpected, especially
because unsigned is never mentioned in the code. One solution that comes
to mind is changing length to signed, but that makes no sense because
length is never negative.
After some thinking a though came that maybe such value overflow should
be treated the same way as array overflow and checked by druntime with
optional disabling in production code (like array bound checks)?
I think it would be very helpful to get an error for such mistake (that
could very easily happen by accident), and on the other hand it can be
disabled (like all other checks).
More information about the Digitalmars-d
mailing list