Commit f3cb5084 authored by Juha Reunanen's avatar Juha Reunanen

Fix #8093: CV_DbgAssert that the result of area() fits in the return value

parent dfb348ef
......@@ -1592,7 +1592,10 @@ Size_<_Tp>& Size_<_Tp>::operator = (const Size_<_Tp>& sz)
template<typename _Tp> inline
_Tp Size_<_Tp>::area() const
{
return width * height;
const _Tp result = width * height;
CV_DbgAssert(!std::numeric_limits<_Tp>::is_integer
|| width == 0 || result / width == height); // make sure the result fits in the return value
return result;
}
template<typename _Tp> static inline
......@@ -1731,7 +1734,10 @@ Size_<_Tp> Rect_<_Tp>::size() const
template<typename _Tp> inline
_Tp Rect_<_Tp>::area() const
{
return width * height;
const _Tp result = width * height;
CV_DbgAssert(!std::numeric_limits<_Tp>::is_integer
|| width == 0 || result / width == height); // make sure the result fits in the return value
return result;
}
template<typename _Tp> template<typename _Tp2> inline
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment