From: Juha Reunanen Date: Sun, 29 Jan 2017 15:32:40 +0000 (+0200) Subject: Fix #8093: CV_DbgAssert that the result of area() fits in the return value X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~1226^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f3cb5084cf1ede04a287766f539ab00162c0eb68;p=platform%2Fupstream%2Fopencv.git Fix #8093: CV_DbgAssert that the result of area() fits in the return value --- diff --git a/modules/core/include/opencv2/core/types.hpp b/modules/core/include/opencv2/core/types.hpp index d5c64ca..13cbe68 100644 --- a/modules/core/include/opencv2/core/types.hpp +++ b/modules/core/include/opencv2/core/types.hpp @@ -1592,7 +1592,10 @@ Size_<_Tp>& Size_<_Tp>::operator = (const Size_<_Tp>& sz) template 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 static inline @@ -1731,7 +1734,10 @@ Size_<_Tp> Rect_<_Tp>::size() const template 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 template inline