From 4bee238cf865157a098de8ae23f6b70f2c33d5bd Mon Sep 17 00:00:00 2001 From: Ivan Pozdeev Date: Fri, 8 Dec 2017 00:12:08 +0300 Subject: [PATCH] GetModuleFileName() doesn't reset last error on success --- modules/videoio/src/cap_ffmpeg.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/videoio/src/cap_ffmpeg.cpp b/modules/videoio/src/cap_ffmpeg.cpp index a70cbdf04a..5439f4304a 100644 --- a/modules/videoio/src/cap_ffmpeg.cpp +++ b/modules/videoio/src/cap_ffmpeg.cpp @@ -124,8 +124,10 @@ private: if (m) { wchar_t path[MAX_PATH]; - size_t sz = GetModuleFileNameW(m, path, sizeof(path)); - if (sz > 0 && ERROR_SUCCESS == GetLastError()) + const size_t path_size = sizeof(path)/sizeof(*path); + size_t sz = GetModuleFileNameW(m, path, path_size); + /* Don't handle paths longer than MAX_PATH until that becomes a real issue */ + if (sz > 0 && sz < path_size) { wchar_t* s = wcsrchr(path, L'\\'); if (s)