From 0e6e1d5a2d6b29b68395ae39580f4803010d7141 Mon Sep 17 00:00:00 2001 From: Klemen Plestenjak Date: Sat, 10 Feb 2024 10:51:38 +0100 Subject: [PATCH] Return size 0 for NULL array, correct for min/max in spatial grid --- engine/breeze/util/array.c | 1 + engine/breeze/util/spatial_grid.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/engine/breeze/util/array.c b/engine/breeze/util/array.c index 021c3d3..10d1f95 100644 --- a/engine/breeze/util/array.c +++ b/engine/breeze/util/array.c @@ -28,6 +28,7 @@ void _bzArrayClear(void *arr) { } i32 _bzArraySize(void *arr) { + if (arr == NULL) return 0; return ARRAY_HEAD(arr)->size; } i32 _bzArrayCapacity(void *arr) { diff --git a/engine/breeze/util/spatial_grid.c b/engine/breeze/util/spatial_grid.c index aa269f7..f5de1df 100644 --- a/engine/breeze/util/spatial_grid.c +++ b/engine/breeze/util/spatial_grid.c @@ -104,6 +104,17 @@ static BzSpatialGridIndex calculateGridIndex(BzSpatialGrid *grid, f32 posX, f32 if (index.minY < 0) index.minY = 0; if (index.maxX >= grid->width) index.maxX = grid->width - 1; if (index.maxY >= grid->height) index.maxY = grid->height - 1; + + if (index.minX > index.maxX) { + i32 tmp = index.minX; + index.minX = index.maxX; + index.maxX = tmp; + } + if (index.minY > index.maxY) { + i32 tmp = index.minY; + index.minY = index.maxY; + index.maxX = tmp; + } return index; }