diff --git a/renderdoc/os/posix/posix_specific.h b/renderdoc/os/posix/posix_specific.h index 6beee462d..792d0d4d6 100644 --- a/renderdoc/os/posix/posix_specific.h +++ b/renderdoc/os/posix/posix_specific.h @@ -32,9 +32,19 @@ #define OS_DEBUG_BREAK() raise(SIGTRAP) -#define GetEmbeddedResource(filename) \ - string(&CONCAT(data_, filename)[0], \ - &CONCAT(data_, filename)[0] + CONCAT(CONCAT(data_, filename), _len)) +struct EmbeddedResourceType +{ + EmbeddedResourceType(const unsigned char *b, int l) : base(b), len(l) {} + const unsigned char *base; + int len; + std::string Get() const { return std::string(base, base + len); } +}; + +#define EmbeddedResource(filename) \ + EmbeddedResourceType(&CONCAT(data_, filename)[0], CONCAT(CONCAT(data_, filename), _len)) + +#define GetEmbeddedResource(filename) EmbeddedResource(filename).Get() +#define GetDynamicEmbeddedResource(resource) resource.Get() namespace OSUtility { diff --git a/renderdoc/os/win32/win32_specific.h b/renderdoc/os/win32/win32_specific.h index 41579f65b..79c49e83e 100644 --- a/renderdoc/os/win32/win32_specific.h +++ b/renderdoc/os/win32/win32_specific.h @@ -36,8 +36,11 @@ #define OS_DEBUG_BREAK() __debugbreak() -#define GetEmbeddedResource(filename) GetEmbeddedResourceWin32(CONCAT(RESOURCE_, filename)) -string GetEmbeddedResourceWin32(int resource); +#define EmbeddedResourceType int +#define EmbeddedResource(filename) CONCAT(RESOURCE_, filename) + +#define GetEmbeddedResource(filename) GetDynamicEmbeddedResource(EmbeddedResource(filename)) +std::string GetDynamicEmbeddedResource(int resource); namespace StringFormat { diff --git a/renderdoc/os/win32/win32_stringio.cpp b/renderdoc/os/win32/win32_stringio.cpp index b9ef930ed..ddb03023c 100644 --- a/renderdoc/os/win32/win32_stringio.cpp +++ b/renderdoc/os/win32/win32_stringio.cpp @@ -41,7 +41,7 @@ using std::wstring; // gives us an address to identify this dll with static int dllLocator = 0; -string GetEmbeddedResourceWin32(int resource) +std::string GetDynamicEmbeddedResource(int resource) { HMODULE mod = NULL; GetModuleHandleExA(