diff --git a/modules/core/include/opencv2/core/mat.inl.hpp b/modules/core/include/opencv2/core/mat.inl.hpp index fd7b061265..e0f13a57f4 100644 --- a/modules/core/include/opencv2/core/mat.inl.hpp +++ b/modules/core/include/opencv2/core/mat.inl.hpp @@ -3112,8 +3112,7 @@ UMat::UMat(const UMat& m) : flags(m.flags), dims(m.dims), rows(m.rows), cols(m.cols), allocator(m.allocator), u(m.u), offset(m.offset), size(&rows) { - if( u ) - CV_XADD(&(u->urefcount), 1); + addref(); if( m.dims <= 2 ) { step[0] = m.step[0]; step[1] = m.step[1]; @@ -3148,8 +3147,7 @@ UMat& UMat::operator = (const UMat& m) { if( this != &m ) { - if( m.u ) - CV_XADD(&(m.u->urefcount), 1); + const_cast(m).addref(); release(); flags = m.flags; if( dims <= 2 && m.dims <= 2 ) diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index 8a11d093e1..2f057a0559 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -199,7 +199,6 @@ public: bool allocate(UMatData* u, int /*accessFlags*/) const { if(!u) return false; - CV_XADD(&u->urefcount, 1); return true; }