summary refs log tree commit diff
path: root/src/tilemap.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tilemap.c')
-rw-r--r--src/tilemap.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/tilemap.c b/src/tilemap.c
index 8a74d9c..ccfe990 100644
--- a/src/tilemap.c
+++ b/src/tilemap.c
@@ -2,6 +2,7 @@
 #include <stdlib.h>
 #include <stdint.h>
 #include <string.h>
+#include <limits.h>
 
 #include "loader.h"
 #include "main.h" // renderer
@@ -70,17 +71,13 @@ collision_T tilemap_area(struct tilemap *tilemap, int x1, int y1, int x2, int y2
 	if (x1 < 0) {
 		x1 = 0;
 	}
-	if (x2 < 0) {
-		x2 = 0;
-	} else if (x2 >= tilemap->width) {
+	if (x2 >= (signed) tilemap->width) {
 		x2 = tilemap->width - 1;
 	}
 	if (y1 < 0) {
 		y1 = 0;
 	}
-	if (y2 < 0) { // for some reason you can bonk your head on nothing without this
-		y2 = 0;
-	} else if (y2 >= tilemap->height) {
+	if (y2 >= (signed) tilemap->height) {
 		y2 = tilemap->height - 1;
 	}
 	return tilemap_area_raw(tilemap, x1, y1, x2, y2);
@@ -234,6 +231,9 @@ struct tilemap *tilemap_load(void *data, size_t size) {
 	if (map->width * map->height * map->layers > size - sizeof (struct map)) {
 		goto fail;
 	}
+	if (map->width > INT_MAX || map->height > INT_MAX) {
+		goto fail;
+	}
 
 	tilemap->backdrop.r = map->backdrop.r;
 	tilemap->backdrop.g = map->backdrop.g;