The round-trip test currently used by checked_cast doesn't work in some cases. For example:
checked_cast<uint>(SIZE_MAX) => error as expected
checked_cast<int>(SIZE_MAX) => no error?
The problem is that SIZE_MAX successfully round-trips because
static_cast<size_t>(-1) => SIZE_MAX
due to sign extension when promoting the type.
checked_cast<uint>(SIZE_MAX) => error as expected
checked_cast<int>(SIZE_MAX) => no error?
The problem is that SIZE_MAX successfully round-trips because
static_cast<size_t>(-1) => SIZE_MAX
due to sign extension when promoting the type.
- relates to
-
JDK-8135181 Re-enable '-Wconversion' for GCC 4.3 and later
- Open
-
JDK-8314694 Separate checked_cast from globalDefinitions.hpp
- Resolved
-
JDK-8331799 ubsan: g1Policy.cpp:1114:33: runtime error: 2.71198e+167 is outside the range of representable values of type 'const unsigned long'
- Closed
- links to
-
Review openjdk/jdk/16005