|
|
@@ -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;
|
|
|
}
|