From 2508f7f971a76de524bb0d5cbf768b92ddff6a20 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Wed, 11 Jul 2018 19:11:36 +0300 Subject: [PATCH] dnn(ocl): fix wrong usage of stalled .getMat() pointers Temporary object lifetime must be greater than pointer usage. --- modules/dnn/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/dnn/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp b/modules/dnn/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp index 034f8d3e7d..a446f3bf15 100644 --- a/modules/dnn/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp +++ b/modules/dnn/src/ocl4dnn/src/ocl4dnn_conv_spatial.cpp @@ -1230,20 +1230,22 @@ bool OCL4DNNConvSpatial::verifyResult(const UMat &bottom, tuned_ = saved_tuned; UMat new_top, new_verify_top; - float *data, *verify_data; + Mat mat_top, mat_verify_top; if (use_half_) { convertFp16(top, new_top); convertFp16(verifyTop, new_verify_top); - data = (float *)new_top.getMat(ACCESS_READ).ptr(); - verify_data = (float *)new_verify_top.getMat(ACCESS_READ).ptr(); + mat_top = new_top.getMat(ACCESS_READ); + mat_verify_top = new_verify_top.getMat(ACCESS_READ); } else { - data = (float *)top.getMat(ACCESS_READ).ptr(); - verify_data = (float *)verifyTop.getMat(ACCESS_READ).ptr(); + mat_top = top.getMat(ACCESS_READ); + mat_verify_top = verifyTop.getMat(ACCESS_READ); } + const float* data = mat_top.ptr(); + const float* verify_data = mat_verify_top.ptr(); for (int32_t n = 0; n < num_; ++n) { for (int32_t g = 0; g < group_; ++g) {