diff --git a/src/CRE/object.cpp b/src/CRE/object.cpp index 325836e5..2272cefc 100644 --- a/src/CRE/object.cpp +++ b/src/CRE/object.cpp @@ -448,7 +448,7 @@ bool obj_index_buffer::load(obj* obj) { } void* index = force_malloc(buffer_size); - if (!index) { + if (!index && buffer_size) { buffer = 0; unload(); return false; @@ -465,7 +465,7 @@ bool obj_index_buffer::load(obj* obj) { } buffer = create_index_buffer(buffer_size, index); - if (!buffer) { + if (!buffer && buffer_size) { free_def(index); unload(); return false; @@ -548,7 +548,7 @@ bool obj_vertex_buffer::load(obj* obj) { int32_t count = double_buffer ? 2 : 1; void* vertex = force_malloc(buffer_size); - if (!vertex) { + if (!vertex && buffer_size) { for (int32_t i = 0; i < count; i++) buffers[i] = 0; unload(); @@ -567,7 +567,7 @@ bool obj_vertex_buffer::load(obj* obj) { for (int32_t i = 0; i < count; i++) { buffers[i] = create_vertex_buffer(buffer_size, vertex); - if (!buffers[i]) { + if (!buffers[i] && buffer_size) { free_def(vertex); unload(); return false; @@ -589,8 +589,12 @@ bool obj_vertex_buffer::load(obj* obj) { void obj_vertex_buffer::unload() { if (mesh_data) { #if SHARED_OBJECT_BUFFER - for (int32_t i = 0; i < mesh_data[0].count; i++) - free_vertex_buffer(buffers[i]); + if (mesh_num) + for (int32_t i = 0; i < mesh_data[0].count; i++) + free_vertex_buffer(buffers[i]); + else + for (int32_t i = 0; i < 3; i++) + free_vertex_buffer(buffers[i]); #else for (int32_t i = 0; i < mesh_num; i++) mesh_data[i].unload();