mirror of
https://github.com/opencv/opencv.git
synced 2025-01-18 22:44:02 +08:00
modules/core/src/ocl.cpp: Fix dangling pointer
Detected by clang trunk: ``` opencv/modules/core/src/ocl.cpp:4337:37: warning: object backing the pointer will be destroyed at the end of the full-expression [-Wdangling] CV_OCL_CHECK_RESULT(retval, cv::format("clCreateBuffer(capacity=%lld) => %p", (long long int)entry.capacity_, (void*)entry.clBuffer_).c_str()); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ opencv/modules/core/src/ocl.cpp:193:42: note: expanded from macro 'CV_OCL_CHECK_RESULT' if (0) { const char* msg_ = (msg); CV_UNUSED(msg_); /* ensure const char* type (cv::String without c_str()) */ } \ ``` because `cv::format` yields a temporary std::string, and thus `msg_` points to a destroyed buffer.
This commit is contained in:
parent
c3cf35ab63
commit
0e92ac2af7
@ -190,7 +190,7 @@ void traceOpenCLCheck(cl_int status, const char* message)
|
||||
CV_OCL_TRACE_CHECK_RESULT(check_result, msg); \
|
||||
if (check_result != CL_SUCCESS) \
|
||||
{ \
|
||||
if (0) { const char* msg_ = (msg); CV_UNUSED(msg_); /* ensure const char* type (cv::String without c_str()) */ } \
|
||||
static_assert(std::is_convertible<decltype(msg), const char*>::value, "msg of CV_OCL_CHECK_RESULT must be const char*"); \
|
||||
cv::String error_msg = CV_OCL_API_ERROR_MSG(check_result, msg); \
|
||||
CV_Error(Error::OpenCLApiCallError, error_msg); \
|
||||
} \
|
||||
@ -210,7 +210,7 @@ void traceOpenCLCheck(cl_int status, const char* message)
|
||||
CV_OCL_TRACE_CHECK_RESULT(check_result, msg); \
|
||||
if (check_result != CL_SUCCESS && isRaiseError()) \
|
||||
{ \
|
||||
if (0) { const char* msg_ = (msg); CV_UNUSED(msg_); /* ensure const char* type (cv::String without c_str()) */ } \
|
||||
static_assert(std::is_convertible<decltype(msg), const char*>::value, "msg of CV_OCL_DBG_CHECK_RESULT must be const char*"); \
|
||||
cv::String error_msg = CV_OCL_API_ERROR_MSG(check_result, msg); \
|
||||
CV_Error(Error::OpenCLApiCallError, error_msg); \
|
||||
} \
|
||||
|
Loading…
Reference in New Issue
Block a user