diff options
author | Frediano Ziglio <fziglio@redhat.com> | 2017-07-21 12:48:57 +0100 |
---|---|---|
committer | Frediano Ziglio <fziglio@redhat.com> | 2017-07-22 09:34:36 +0100 |
commit | 8f47080fa84678139c74e06c03dfa7bce2b8836d (patch) | |
tree | 998daa31e9e8c9e224343af16f9809b1d0028063 | |
parent | cf7a92965525dd98b2d7cdf0ffd7d46414c04fa0 (diff) |
Remove small memory leak in log_version
log_version() declares 2 info_buf variables, the inner one is used to
hold allocated memory, but then we free the outer one, which is NULL.
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
-rw-r--r-- | common/vdlog.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/common/vdlog.cpp b/common/vdlog.cpp index 76f4297..c983127 100644 --- a/common/vdlog.cpp +++ b/common/vdlog.cpp @@ -20,6 +20,7 @@ #include <stdio.h> #include <stdarg.h> #include <share.h> +#include <vector> #define LOG_ROLL_SIZE (1024 * 1024) @@ -80,7 +81,6 @@ void log_version() { DWORD handle; TCHAR module_fname[MAX_PATH]; - TCHAR* info_buf = NULL; try { if (!GetModuleFileName(NULL, module_fname, MAX_PATH)) { @@ -90,13 +90,13 @@ void log_version() if (version_inf_size == 0) { throw; } - TCHAR* info_buf = new TCHAR[version_inf_size]; - if (!GetFileVersionInfo(module_fname, handle, version_inf_size, info_buf)) { + std::vector<TCHAR> info_buf(version_inf_size); + if (!GetFileVersionInfo(module_fname, handle, version_inf_size, &info_buf[0])) { throw; } UINT size; VS_FIXEDFILEINFO* file_info; - if (!VerQueryValue(info_buf, L"\\", (VOID**)&file_info, &size) || + if (!VerQueryValue(&info_buf[0], L"\\", (VOID**)&file_info, &size) || size < sizeof(VS_FIXEDFILEINFO)) { throw; } @@ -108,5 +108,4 @@ void log_version() } catch (...) { vd_printf("get version info failed"); } - delete[] info_buf; } |