From 0351dc2cbd1a03a2013cf1e54b42570f32c11e4c Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 7 Jul 2015 19:45:12 +0200 Subject: [PATCH] Speculative crash fix - check for device pointer being valid * I don't think this can happen unless the user code is calling Release on something that's already released (only time device pointer NULL'd) --- renderdoc/driver/d3d11/d3d11_resources.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/d3d11/d3d11_resources.cpp b/renderdoc/driver/d3d11/d3d11_resources.cpp index 6f699b4af..0f38f13d1 100644 --- a/renderdoc/driver/d3d11/d3d11_resources.cpp +++ b/renderdoc/driver/d3d11/d3d11_resources.cpp @@ -1548,23 +1548,31 @@ HRESULT STDMETHODCALLTYPE RefCounter::QueryInterface( unsigned int RefCounter::SoftRef(WrappedID3D11Device *device) { unsigned int ret = AddRef(); - device->SoftRef(); + if(device) + device->SoftRef(); + else + RDCWARN("No device pointer, is a deleted resource being AddRef()d?"); return ret; } unsigned int RefCounter::SoftRelease(WrappedID3D11Device *device) { unsigned int ret = Release(); - device->SoftRelease(); + if(device) + device->SoftRelease(); + else + RDCWARN("No device pointer, is a deleted resource being Release()d?"); return ret; } void RefCounter::AddDeviceSoftref(WrappedID3D11Device *device) { - device->SoftRef(); + if(device) + device->SoftRef(); } void RefCounter::ReleaseDeviceSoftref(WrappedID3D11Device *device) { - device->SoftRelease(); + if(device) + device->SoftRelease(); } \ No newline at end of file