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

pull/8107/head
Juha Reunanen 8 years ago
parent dfb348ef0b
commit f3cb5084cf
  1. 10
      modules/core/include/opencv2/core/types.hpp

@ -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

Loading…
Cancel
Save