diff --git a/src/bgfx_p.h b/src/bgfx_p.h index b49b4eaed..280d45f53 100644 --- a/src/bgfx_p.h +++ b/src/bgfx_p.h @@ -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; }