From: lars@... Date: 2017-07-15T13:36:24+00:00 Subject: [ruby-core:82077] [Ruby trunk Bug#13748] Fix mul overflow detection for LLP64 arch. Issue #13748 has been reported by larskanis (Lars Kanis). ---------------------------------------- Bug #13748: Fix mul overflow detection for LLP64 arch. https://bugs.ruby-lang.org/issues/13748 * Author: larskanis (Lars Kanis) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.0dev (2017-07-15 trunk 57962) [x64-mingw32] * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- FIXNUMs are expected to fit into a long type, but the test in MUL_OVERFLOW_FIXNUM_P() is about the VALUE type. Since long is smaller than VALUE on LLP64, the overflow is not detected. As an exemplary result "2**31" evaluates to "-2147483648" instead of "2147483648" on Windows when built with gcc-7.1.0. This also results in many more test failures as described in this github issue: https://github.com/oneclick/rubyinstaller2/issues/55 gcc versions before 7.1.0 don't provide __builtin_mul_overflow_p() and ruby-2.4.x doesn't use this function, so that they don't show this broken behavior. The attached patch fixes the issue. However I'm currently unable to run a full "make test-all" to verify whether this fixes all gcc-7.1.0 related issues. ---Files-------------------------------- 0001-Fix-overflow-detection-for-LLP64-arch.patch (1010 Bytes) -- https://bugs.ruby-lang.org/ Unsubscribe: