瀏覽代碼

Review to avoid UBSAN complaining #1891

pull/3299/head
Ray 1 年之前
父節點
當前提交
30a9a24db9
共有 1 個檔案被更改,包括 10 行新增2 行删除
  1. +10
    -2
      src/rlgl.h

+ 10
- 2
src/rlgl.h 查看文件

@ -3687,7 +3687,11 @@ void rlDrawVertexArray(int offset, int count)
// Draw vertex array elements
void rlDrawVertexArrayElements(int offset, int count, const void *buffer)
{
glDrawElements(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, (const unsigned short *)buffer + offset);
// NOTE: Added pointer math separately from function to avoid UBSAN complaining
unsigned short *bufferPtr = (unsigned short *)buffer;
if (offset > 0) bufferPtr += offset;
glDrawElements(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, (const unsigned short *)bufferPtr);
}
// Draw vertex array instanced
@ -3702,7 +3706,11 @@ void rlDrawVertexArrayInstanced(int offset, int count, int instances)
void rlDrawVertexArrayElementsInstanced(int offset, int count, const void *buffer, int instances)
{
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
glDrawElementsInstanced(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, (const unsigned short *)buffer + offset, instances);
// NOTE: Added pointer math separately from function to avoid UBSAN complaining
unsigned short *bufferPtr = (unsigned short *)buffer;
if (offset > 0) bufferPtr += offset;
glDrawElementsInstanced(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, (const unsigned short *)bufferPtr, instances);
#endif
}

Loading…
取消
儲存