diff --git a/src/bgfx.cpp b/src/bgfx.cpp index 78200e03..1afc54da 100644 --- a/src/bgfx.cpp +++ b/src/bgfx.cpp @@ -19,6 +19,14 @@ namespace bgfx # define BGFX_CHECK_RENDER_THREAD() #endif // BGFX_CONFIG_MULTITHREADED && !BX_PLATFORM_OSX && !BX_PLATFORM_IOS +#define BGFX_CHECK_HANDLE(_handle, _max) \ + BX_CHECK(isValid(_handle) \ + && _handle.idx < _max \ + , "Invalid handle. %d (< %d " #_max ")" \ + , _handle.idx \ + , _max \ + ); + #if BX_PLATFORM_ANDROID ::ANativeWindow* g_bgfxAndroidWindow = NULL; @@ -2749,18 +2757,21 @@ again: void setUniform(UniformHandle _handle, const void* _value, uint16_t _num) { BGFX_CHECK_MAIN_THREAD(); + BGFX_CHECK_HANDLE(_handle, BGFX_CONFIG_MAX_UNIFORMS); s_ctx->setUniform(_handle, _value, _num); } void setIndexBuffer(IndexBufferHandle _handle, uint32_t _firstIndex, uint32_t _numIndices) { BGFX_CHECK_MAIN_THREAD(); + BGFX_CHECK_HANDLE(_handle, BGFX_CONFIG_MAX_INDEX_BUFFERS); s_ctx->setIndexBuffer(_handle, _firstIndex, _numIndices); } void setIndexBuffer(DynamicIndexBufferHandle _handle, uint32_t _firstIndex, uint32_t _numIndices) { BGFX_CHECK_MAIN_THREAD(); + BGFX_CHECK_HANDLE(_handle, BGFX_CONFIG_MAX_DYNAMIC_INDEX_BUFFERS); s_ctx->setIndexBuffer(_handle, _firstIndex, _numIndices); } @@ -2785,12 +2796,14 @@ again: void setVertexBuffer(VertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices) { BGFX_CHECK_MAIN_THREAD(); + BGFX_CHECK_HANDLE(_handle, BGFX_CONFIG_MAX_VERTEX_BUFFERS); s_ctx->setVertexBuffer(_handle, _startVertex, _numVertices); } void setVertexBuffer(DynamicVertexBufferHandle _handle, uint32_t _numVertices) { BGFX_CHECK_MAIN_THREAD(); + BGFX_CHECK_HANDLE(_handle, BGFX_CONFIG_MAX_DYNAMIC_VERTEX_BUFFERS); s_ctx->setVertexBuffer(_handle, _numVertices); } diff --git a/src/bgfx_p.h b/src/bgfx_p.h index b9a88460..c9f17b54 100644 --- a/src/bgfx_p.h +++ b/src/bgfx_p.h @@ -1370,7 +1370,6 @@ namespace bgfx void setVertexBuffer(VertexBufferHandle _handle, uint32_t _startVertex, uint32_t _numVertices) { - BX_CHECK(_handle.idx < BGFX_CONFIG_MAX_VERTEX_BUFFERS, "Invalid vertex buffer handle. %d (< %d)", _handle.idx, BGFX_CONFIG_MAX_VERTEX_BUFFERS); m_draw.m_startVertex = _startVertex; m_draw.m_numVertices = _numVertices; m_draw.m_vertexBuffer = _handle;