From 944a125c68cea8798b8e195fa138ae68ef8eb2c9 Mon Sep 17 00:00:00 2001 From: Megvii Engine Team Date: Thu, 9 Apr 2020 16:34:45 +0800 Subject: [PATCH] fix(mgb): improve exception safety with smart pointers GitOrigin-RevId: e08421ac2938954cbd0bfca5ba17781f69e3a812 --- dnn/src/common/cv/mat.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/dnn/src/common/cv/mat.cpp b/dnn/src/common/cv/mat.cpp index f44eb4f60..899c1d0b5 100644 --- a/dnn/src/common/cv/mat.cpp +++ b/dnn/src/common/cv/mat.cpp @@ -117,23 +117,21 @@ bool Mat::equals(const Mat& rhs) const { return false; if (this->m_channels != rhs.m_channels) return false; - T* row1 = new T[m_cols * m_channels]; - T* row2 = new T[m_cols * m_channels]; + std::unique_ptr row1(new T[m_cols * m_channels]); + std::unique_ptr row2(new T[m_cols * m_channels]); megdnn_assert(row1); megdnn_assert(row2); for (size_t r = 0; r < m_rows; ++r) { - cuda_check(cudaMemcpy(row1, this->ptr(r), + cuda_check(cudaMemcpy(row1.get(), this->ptr(r), sizeof(T) * m_cols * m_channels, cudaMemcpyDeviceToHost)); - cuda_check(cudaMemcpy(row2, rhs.ptr(r), sizeof(T) * m_cols * m_channels, + cuda_check(cudaMemcpy(row2.get(), rhs.ptr(r), sizeof(T) * m_cols * m_channels, cudaMemcpyDeviceToHost)); for (size_t i = 0; i < m_cols * m_channels; ++i) { if (row1[i] != row2[i]) return false; } } - delete[] row1; - delete[] row2; return true; } -- GitLab