Explorar o código

Avoid overflow when calculating visible_cells

Patrick Dawson %!s(int64=5) %!d(string=hai) anos
pai
achega
9e28df22a0
Modificáronse 1 ficheiros con 1 adicións e 1 borrados
  1. 1 1
      scene/resources/world_2d.cpp

+ 1 - 1
scene/resources/world_2d.cpp

@@ -211,7 +211,7 @@ struct SpatialIndexer2D {
 			List<VisibilityNotifier2D *> added;
 			List<VisibilityNotifier2D *> removed;
 
-			int visible_cells = (end.x - begin.x) * (end.y - begin.y);
+			uint64_t visible_cells = (uint64_t)(end.x - begin.x) * (uint64_t)(end.y - begin.y);
 
 			if (visible_cells > 10000) {
 				//well you zoomed out a lot, it's your problem. To avoid freezing in the for loops below, we'll manually check cell by cell