From f291be452fd30f6558b66a38c350ed582214f1aa Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 13 Jun 2017 18:27:50 +0100 Subject: [PATCH] Verify that DXGI optional pointers exist before wrapping. Refs #652 * For example in ::GetFullscreenState() the target pointer itself can be NULL as well as the pointed-to-pointer being NULL. --- renderdoc/driver/dxgi/dxgi_wrapped.cpp | 6 +++--- renderdoc/driver/dxgi/dxgi_wrapped.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/dxgi/dxgi_wrapped.cpp b/renderdoc/driver/dxgi/dxgi_wrapped.cpp index fe233d1c0..be985b1b0 100644 --- a/renderdoc/driver/dxgi/dxgi_wrapped.cpp +++ b/renderdoc/driver/dxgi/dxgi_wrapped.cpp @@ -359,7 +359,7 @@ HRESULT STDMETHODCALLTYPE WrappedIDXGISwapChain4::GetContainingOutput(IDXGIOutpu { HRESULT ret = m_pReal->GetContainingOutput(ppOutput); - if(SUCCEEDED(ret) && *ppOutput) + if(SUCCEEDED(ret) && ppOutput && *ppOutput) *ppOutput = (IDXGIOutput *)(new WrappedIDXGIOutput5(this, *ppOutput)); return ret; @@ -408,7 +408,7 @@ HRESULT WrappedIDXGISwapChain4::GetFullscreenState( { HRESULT ret = m_pReal->GetFullscreenState(pFullscreen, ppTarget); - if(SUCCEEDED(ret) && *ppTarget) + if(SUCCEEDED(ret) && ppTarget && *ppTarget) *ppTarget = (IDXGIOutput *)(new WrappedIDXGIOutput5(this, *ppTarget)); return ret; @@ -554,7 +554,7 @@ HRESULT STDMETHODCALLTYPE WrappedIDXGISwapChain4::GetRestrictToOutput(IDXGIOutpu { HRESULT ret = m_pReal2->GetRestrictToOutput(ppRestrictToOutput); - if(SUCCEEDED(ret) && *ppRestrictToOutput) + if(SUCCEEDED(ret) && ppRestrictToOutput && *ppRestrictToOutput) *ppRestrictToOutput = (IDXGIOutput *)(new WrappedIDXGIOutput5(this, *ppRestrictToOutput)); return ret; diff --git a/renderdoc/driver/dxgi/dxgi_wrapped.h b/renderdoc/driver/dxgi/dxgi_wrapped.h index b5c09628f..2506a9c3f 100644 --- a/renderdoc/driver/dxgi/dxgi_wrapped.h +++ b/renderdoc/driver/dxgi/dxgi_wrapped.h @@ -1056,7 +1056,7 @@ public: { HRESULT ret = m_pReal->EnumOutputs(Output, ppOutput); - if(SUCCEEDED(ret)) + if(SUCCEEDED(ret) && ppOutput && *ppOutput) *ppOutput = (IDXGIOutput *)(new WrappedIDXGIOutput5(this, *ppOutput)); return ret;