From 71abc2079c2cc13979918baed51fc6a0a52987d8 Mon Sep 17 00:00:00 2001 From: baldurk Date: Sun, 5 Oct 2014 16:30:20 +0100 Subject: [PATCH] [Refs #87: Static Analysis] Do error checking on fetching resources --- renderdoc/os/win32/win32_stringio.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/renderdoc/os/win32/win32_stringio.cpp b/renderdoc/os/win32/win32_stringio.cpp index f593c3db4..2d0ff89e4 100644 --- a/renderdoc/os/win32/win32_stringio.cpp +++ b/renderdoc/os/win32/win32_stringio.cpp @@ -45,12 +45,24 @@ string GetEmbeddedResourceWin32(int resource) GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS|GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, (const char *)&dllLocator, &mod); HRSRC res = FindResource(mod, MAKEINTRESOURCE(resource), MAKEINTRESOURCE(TYPE_EMBED)); - int err = GetLastError(); - HGLOBAL data = LoadResource(mod, res); - DWORD resSize = SizeofResource(mod, res); - const char* resData = (const char*)LockResource(data); + + if(res == NULL) + { + RDCFATAL("Couldn't find embedded win32 resource"); + } - return string(resData, resData+resSize); + HGLOBAL data = LoadResource(mod, res); + + if(data != NULL) + { + DWORD resSize = SizeofResource(mod, res); + const char* resData = (const char*)LockResource(data); + + if(resData) + return string(resData, resData+resSize); + } + + return ""; } namespace Keyboard