mgorny created this revision.
mgorny added reviewers: labath, emaste, krytarowski, shafik.
mgorny requested review of this revision.
Fix the fill_clamp() function to handle signed source types. Make sure
that the source value is always non-negative, and cast it to unsigned
when verifying the upper bound. This fixes compiler warnings about
comparing unsigned and signed types.
https://reviews.llvm.org/D113519
Files:
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
Index:
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
===================================================================
---
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
+++
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
@@ -771,8 +771,9 @@
template <typename T, typename U>
static void fill_clamp(T &dest, U src, typename T::value_type fallback) {
- dest = src <= std::numeric_limits<typename T::value_type>::max() ? src
- : fallback;
+ using UU = typename std::make_unsigned<U>::type;
+ constexpr auto T_max = std::numeric_limits<typename T::value_type>::max();
+ dest = src >= 0 && static_cast<UU>(src) <= T_max ? src : fallback;
}
GDBRemoteCommunication::PacketResult
Index: lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
===================================================================
--- lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
+++ lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp
@@ -771,8 +771,9 @@
template <typename T, typename U>
static void fill_clamp(T &dest, U src, typename T::value_type fallback) {
- dest = src <= std::numeric_limits<typename T::value_type>::max() ? src
- : fallback;
+ using UU = typename std::make_unsigned<U>::type;
+ constexpr auto T_max = std::numeric_limits<typename T::value_type>::max();
+ dest = src >= 0 && static_cast<UU>(src) <= T_max ? src : fallback;
}
GDBRemoteCommunication::PacketResult
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits