Handle null pointer produced by vertex buffer lock

Issue=120 TRAC #16558 Signed-off-by: Daniel Koch Author: Nicolas Capens (original patch by Jacob Benoit) git-svn-id: https://angleproject.googlecode.com/svn/trunk@622 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent a129765f
#define MAJOR_VERSION 0 #define MAJOR_VERSION 0
#define MINOR_VERSION 0 #define MINOR_VERSION 0
#define BUILD_VERSION 0 #define BUILD_VERSION 0
#define BUILD_REVISION 620 #define BUILD_REVISION 622
#define STRINGIFY(x) #x #define STRINGIFY(x) #x
#define MACRO_STRINGIFY(x) STRINGIFY(x) #define MACRO_STRINGIFY(x) STRINGIFY(x)
......
...@@ -155,16 +155,23 @@ void Blit::initGeometry() ...@@ -155,16 +155,23 @@ void Blit::initGeometry()
IDirect3DDevice9 *device = getDevice(); IDirect3DDevice9 *device = getDevice();
HRESULT hr = device->CreateVertexBuffer(sizeof(quad), D3DUSAGE_WRITEONLY, 0, D3DPOOL_DEFAULT, &mQuadVertexBuffer, NULL); HRESULT result = device->CreateVertexBuffer(sizeof(quad), D3DUSAGE_WRITEONLY, 0, D3DPOOL_DEFAULT, &mQuadVertexBuffer, NULL);
if (FAILED(hr)) if (FAILED(result))
{ {
ASSERT(hr == D3DERR_OUTOFVIDEOMEMORY || hr == E_OUTOFMEMORY); ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY);
return error(GL_OUT_OF_MEMORY);
}
void *lockPtr = NULL;
result = mQuadVertexBuffer->Lock(0, 0, &lockPtr, 0);
if (FAILED(result) || lockPtr == NULL)
{
ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY);
return error(GL_OUT_OF_MEMORY); return error(GL_OUT_OF_MEMORY);
} }
void *lockPtr;
mQuadVertexBuffer->Lock(0, 0, &lockPtr, 0);
memcpy(lockPtr, quad, sizeof(quad)); memcpy(lockPtr, quad, sizeof(quad));
mQuadVertexBuffer->Unlock(); mQuadVertexBuffer->Unlock();
...@@ -174,10 +181,11 @@ void Blit::initGeometry() ...@@ -174,10 +181,11 @@ void Blit::initGeometry()
D3DDECL_END() D3DDECL_END()
}; };
hr = device->CreateVertexDeclaration(elements, &mQuadVertexDeclaration); result = device->CreateVertexDeclaration(elements, &mQuadVertexDeclaration);
if (FAILED(hr))
if (FAILED(result))
{ {
ASSERT(hr == D3DERR_OUTOFVIDEOMEMORY || hr == E_OUTOFMEMORY); ASSERT(result == D3DERR_OUTOFVIDEOMEMORY || result == E_OUTOFMEMORY);
return error(GL_OUT_OF_MEMORY); return error(GL_OUT_OF_MEMORY);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment