diff --git a/modules/img/base/src/image_state/value_holder.cc b/modules/img/base/src/image_state/value_holder.cc index 71c79d1d73cd384684669b9f349e1f3b41443d6e..aafae4b5412428571a0e0f24bcfde72443cd58fd 100644 --- a/modules/img/base/src/image_state/value_holder.cc +++ b/modules/img/base/src/image_state/value_holder.cc @@ -62,8 +62,13 @@ size_t calc_volume(const Size& s) { ++numbits; } + tmp=sizeof(V); + while (tmp >>= 1) + { + ++numbits; + } // check if number of pixels (2**(numbits+1)) larger than what size_t can handle - if(numbits>=sizeof(size_t)*sizeof(V)*8){ + if(numbits>=sizeof(size_t)*8){ throw std::bad_alloc(); } return static_cast<size_t>(s[0])*static_cast<size_t>(s[1])*static_cast<size_t>(s[2]);