diff --git a/modules/core/src/gpumat.cpp b/modules/core/src/gpumat.cpp index e64e20030..e8ef6ad38 100644 --- a/modules/core/src/gpumat.cpp +++ b/modules/core/src/gpumat.cpp @@ -42,7 +42,7 @@ #include "precomp.hpp" #include "opencv2/core/gpumat.hpp" -#include +#include #ifdef HAVE_CUDA #include @@ -81,9 +81,8 @@ namespace { if (err < 0) { - std::ostringstream msg; - msg << "NPP API Call Error: " << err; - cv::gpu::error(msg.str().c_str(), file, line, func); + String msg = cv::format("NPP API Call Error: %d", err); + cv::gpu::error(msg.c_str(), file, line, func); } } } @@ -220,16 +219,25 @@ namespace void CudaArch::fromStr(const String& set_as_str, std::vector& arr) { - if (set_as_str.find_first_not_of(" ") == String::npos) - return; + arr.clear(); - std::istringstream stream(set_as_str); - int cur_value; - - while (!stream.eof()) + size_t pos = 0; + while (pos < set_as_str.size()) { - stream >> cur_value; - arr.push_back(cur_value); + if (isspace(set_as_str[pos])) + { + ++pos; + } + else + { + int cur_value; + int chars_read; + int args_read = sscanf(set_as_str.c_str() + pos, "%d%n", &cur_value, &chars_read); + CV_Assert(args_read == 2); + + arr.push_back(cur_value); + pos += chars_read; + } } std::sort(arr.begin(), arr.end()); @@ -1570,8 +1578,8 @@ void cv::gpu::error(const char *error_string, const char *file, const int line, const char* errorStr = cvErrorStr(code); const char* function = func ? func : "unknown function"; - std::cerr << "OpenCV Error: " << errorStr << "(" << error_string << ") in " << function << ", file " << file << ", line " << line; - std::cerr.flush(); + fprintf(stderr, "OpenCV Error: %s(%s) in %s, file %s, line %d", errorStr, error_string, function, file, line); + fflush(stderr); } else cv::error( cv::Exception(code, error_string, func, file, line) );