summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--misc.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/misc.h b/misc.h
index 084d22bd..8a450c3f 100644
--- a/misc.h
+++ b/misc.h
@@ -381,8 +381,14 @@ inline bool SafeConvert(T1 from, T2 &to)
// Fall through for T1 is unsigned
}
- if(from > static_cast<T1>(std::numeric_limits<T2>::max()))
+ // Handle unsigned greater
+ if(!std::numeric_limits<T1>::is_signed && from > static_cast<T1>(std::numeric_limits<T2>::max())) {
return false;
+ }
+ // Handle signed less
+ else if(from < static_cast<T1>(std::numeric_limits<T2>::min())) {
+ return false;
+ }
return true;
}