diff --git a/vehicle.c b/vehicle.c index 99d0a3b71f..9046b8234a 100644 --- a/vehicle.c +++ b/vehicle.c @@ -2025,6 +2025,14 @@ UnitID GetFreeUnitNumber(byte type) default: assert(0); } + if (max == 0) { + /* we can't build any of this kind of vehicle, so we just return 1 instead of looking for a free number + * a max of 0 will cause the following code to write to a NULL pointer + * We know that 1 is bigger than the max allowed vehicle number, so it's the same as returning something, that is too big + */ + return 1; + } + if (max > gmax) { gmax = max; free(cache);