simplified error checking, out of memory now results in an immediate crash when trying to expand world

pull/12/head
Sara 2023-07-12 02:44:21 +02:00
parent 5e001bc345
commit 59de57fe3a
1 changed files with 14 additions and 15 deletions

View File

@ -1,5 +1,6 @@
#include "world.h" #include "world.h"
#include "memory.h" #include "memory.h"
#include "assert.h"
#include "math/vec.h" #include "math/vec.h"
#include "object.h" #include "object.h"
@ -18,10 +19,12 @@ int _expand_world() {
new_num = 16; new_num = 16;
} }
object_t** new_list = realloc(_world_objects.objects, new_num * sizeof(object_t*)); object_t** new_list = realloc(_world_objects.objects, new_num * sizeof(object_t*));
if(new_list == NULL) { if(new_list == NULL) {
printf("ERROR: failed to expand world when requesting additional objects\n"); assert(!"ERROR: Out of memory");
return 0; exit(-10);
} else { }
for(size_t i = _world_objects.num; i < new_num; ++i) { for(size_t i = _world_objects.num; i < new_num; ++i) {
new_list[i] = NULL; new_list[i] = NULL;
} }
@ -30,7 +33,6 @@ int _expand_world() {
_world_objects.num = new_num; _world_objects.num = new_num;
return 1; return 1;
} }
}
static inline static inline
size_t _find_free_object() { size_t _find_free_object() {
@ -40,11 +42,8 @@ size_t _find_free_object() {
} }
} }
size_t num = _world_objects.num; size_t num = _world_objects.num;
if(_expand_world()) { _expand_world();
return num; return num;
} else {
return NULL;
}
} }
void world_clear() { void world_clear() {