# HG changeset patch # User Tomas Lindquist Olsen # Date 1236106059 -3600 # Node ID 21691e437c9506269062ca3d1fc0d0a51190e563 # Parent c4c6e5e9c23e17e10982cf2684bef7d35c461560 Updated lifetime.d with a 32bit faster codepath for overflow checks. diff -r c4c6e5e9c23e -r 21691e437c95 runtime/internal/lifetime.d --- a/runtime/internal/lifetime.d Tue Mar 03 19:37:47 2009 +0100 +++ b/runtime/internal/lifetime.d Tue Mar 03 19:47:39 2009 +0100 @@ -85,9 +85,20 @@ size_t length_adjust(size_t sizeelem, size_t newlength) { - size_t newsize = sizeelem * newlength; - if (newsize / newlength != sizeelem) - onOutOfMemoryError(); + size_t newsize = void; + static if (size_t.sizeof < ulong.sizeof) + { + ulong s = cast(ulong)sizeelem * cast(ulong)newlength; + if (s > size_t.max) + onOutOfMemoryError(); + newsize = cast(size_t)s; + } + else + { + newsize = sizeelem * newlength; + if (newsize / newlength != sizeelem) + onOutOfMemoryError(); + } return newsize; } }