From 83cfacf94b0fd7e29af451ae221189b8f1536a11 Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Thu, 10 Jul 2025 23:08:38 +0800 Subject: [PATCH] [Fix] (MG_State/Buffer): Prevent crashing when buffer obj is not created but is going to be deleted. --- MG/MG_GL/State/Buffer/BufferState.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/MG/MG_GL/State/Buffer/BufferState.cpp b/MG/MG_GL/State/Buffer/BufferState.cpp index 60504e25..04d50869 100644 --- a/MG/MG_GL/State/Buffer/BufferState.cpp +++ b/MG/MG_GL/State/Buffer/BufferState.cpp @@ -250,13 +250,15 @@ bool BufferState::ValidateGeneratedName(GLuint buffer) const { } void BufferState::Delete(GLuint buffer) { - bufferObjects_[buffer].reset(); + MG_Util::Debug::LogD("MG_State: Buffer: Delete buffer %u", buffer); + if (bufferObjects_.size() > buffer) + bufferObjects_[buffer].reset(); indexGenerator_.Delete(buffer); for (auto& [target, id] : currentBindings_) { if (id == buffer) id = 0; } - MG_Util::Debug::LogD("MG_State: Buffer: Delete buffer %u", buffer); + MG_Util::Debug::LogD("MG_State: Buffer: Delete buffer %u successfully", buffer); } GLenum BufferState::DeleteN(GLsizei n, const GLuint* buffers) {