Release memory inside any function that takes Memory argument and it could fail when out of handles.

This commit is contained in:
Branimir Karadžić
2017-04-07 20:02:31 -07:00
parent 8b14a7e977
commit c44c68ed4c

View File

@@ -2372,6 +2372,10 @@ namespace bgfx
cmdbuf.write(_mem);
cmdbuf.write(_flags);
}
else
{
release(_mem);
}
return handle;
}
@@ -2420,6 +2424,10 @@ namespace bgfx
cmdbuf.write(declHandle);
cmdbuf.write(_flags);
}
else
{
release(_mem);
}
return handle;
}
@@ -2526,10 +2534,16 @@ namespace bgfx
BX_CHECK(0 == (_flags & BGFX_BUFFER_COMPUTE_READ_WRITE), "Cannot initialize compute buffer from CPU.");
const uint32_t indexSize = 0 == (_flags & BGFX_BUFFER_INDEX32) ? 2 : 4;
DynamicIndexBufferHandle handle = createDynamicIndexBuffer(_mem->size/indexSize, _flags);
if (isValid(handle) )
{
updateDynamicIndexBuffer(handle, 0, _mem);
}
else
{
release(_mem);
}
return handle;
}
@@ -2679,10 +2693,16 @@ namespace bgfx
{
uint32_t numVertices = _mem->size/_decl.m_stride;
DynamicVertexBufferHandle handle = createDynamicVertexBuffer(numVertices, _decl, _flags);
if (isValid(handle) )
{
updateDynamicVertexBuffer(handle, 0, _mem);
}
else
{
release(_mem);
}
return handle;
}
@@ -2955,6 +2975,7 @@ namespace bgfx
if (!err.isOk() )
{
ShaderHandle invalid = BGFX_INVALID_HANDLE;
release(_mem);
return invalid;
}
@@ -2969,6 +2990,7 @@ namespace bgfx
, ( (uint8_t*)&magic)[3]
);
ShaderHandle invalid = BGFX_INVALID_HANDLE;
release(_mem);
return invalid;
}
@@ -3033,6 +3055,10 @@ namespace bgfx
cmdbuf.write(handle);
cmdbuf.write(_mem);
}
else
{
release(_mem);
}
return handle;
}
@@ -3295,6 +3321,10 @@ namespace bgfx
cmdbuf.write(_flags);
cmdbuf.write(_skip);
}
else
{
release(_mem);
}
return handle;
}