Fix various possible integer type conversion issues

This commit is contained in:
Jonathan G Rennison
2023-02-15 23:05:03 +00:00
parent 7c1d2bef0e
commit 8d6e57799c
9 changed files with 16 additions and 11 deletions

View File

@@ -45,7 +45,7 @@ void Blitter_40bppAnim::SetPixel32(void *video, int x, int y, uint8 colour, uint
} else { } else {
*((Colour *)video + x + y * _screen.pitch) = colour32; *((Colour *)video + x + y * _screen.pitch) = colour32;
VideoDriver::GetInstance()->GetAnimBuffer()[((uint32 *)video - (uint32 *)_screen.dst_ptr) + x + y * _screen.pitch] = 0; VideoDriver::GetInstance()->GetAnimBuffer()[((uint32 *)video - (uint32 *)_screen.dst_ptr) + x + (ssize_t)y * _screen.pitch] = 0;
} }
} }

View File

@@ -375,7 +375,7 @@ public:
void RemoveEdge(NodeID from, NodeID to); void RemoveEdge(NodeID from, NodeID to);
inline uint64 CalculateCostEstimate() const { inline uint64 CalculateCostEstimate() const {
uint64 size_squared = this->Size() * this->Size(); uint64 size_squared = (uint32)this->Size() * (uint32)this->Size();
return size_squared * FindLastBit(size_squared * size_squared); // N^2 * 4log_2(N) return size_squared * FindLastBit(size_squared * size_squared); // N^2 * 4log_2(N)
} }

View File

@@ -68,7 +68,7 @@ static void Load_MAPT()
static void Check_MAPH_common() static void Check_MAPH_common()
{ {
if (_sl_maybe_chillpp && (SlGetFieldLength() == 0 || SlGetFieldLength() == _map_dim_x * _map_dim_y * 2)) { if (_sl_maybe_chillpp && (SlGetFieldLength() == 0 || SlGetFieldLength() == (size_t)_map_dim_x * (size_t)_map_dim_y * 2)) {
_sl_maybe_chillpp = false; _sl_maybe_chillpp = false;
extern void SlXvChillPPSpecialSavegameVersions(); extern void SlXvChillPPSpecialSavegameVersions();
SlXvChillPPSpecialSavegameVersions(); SlXvChillPPSpecialSavegameVersions();

View File

@@ -345,7 +345,7 @@ static void Load_TOWN()
uint16 w = SlReadUint16(); uint16 w = SlReadUint16();
uint16 h = SlReadUint16(); uint16 h = SlReadUint16();
if (w != 0) { if (w != 0) {
SlSkipBytes((SlXvIsFeaturePresent(XSLFI_TOWN_CARGO_MATRIX) ? 8 : 4) * (w / 4 * h / 4)); SlSkipBytes((SlXvIsFeaturePresent(XSLFI_TOWN_CARGO_MATRIX) ? 8 : 4) * ((uint)(w / 4) * (uint)(h / 4)));
} }
} }
} }

View File

@@ -191,7 +191,7 @@ TemplateVehicle* TemplateVehicleFromVirtualTrain(Train *virt)
Train *init_virt = virt; Train *init_virt = virt;
TemplateVehicle *tmp; TemplateVehicle *tmp = nullptr;
TemplateVehicle *prev = nullptr; TemplateVehicle *prev = nullptr;
for (; virt; virt = virt->Next()) { for (; virt; virt = virt->Next()) {
tmp = new TemplateVehicle(virt->engine_type); tmp = new TemplateVehicle(virt->engine_type);

View File

@@ -7319,7 +7319,7 @@ int GetTrainRealisticAccelerationAtSpeed(const int speed, const int mass, const
if (!maglev) { if (!maglev) {
/* Static resistance plus rolling friction. */ /* Static resistance plus rolling friction. */
resistance = 10 * mass; resistance = 10 * mass;
resistance += mass * (15 * (512 + speed) / 512); resistance += (int64)mass * (int64)(15 * (512 + speed) / 512);
} }
const int area = 14; const int area = 14;

View File

@@ -1348,7 +1348,7 @@ CommandCost CmdTemplateVehicleFromTrain(TileIndex tile, DoCommandFlag flags, uin
bool should_execute = (flags & DC_EXEC) != 0; bool should_execute = (flags & DC_EXEC) != 0;
if (should_execute) { if (should_execute) {
TemplateVehicle *tmp; TemplateVehicle *tmp = nullptr;
TemplateVehicle *prev = nullptr; TemplateVehicle *prev = nullptr;
for (; clicked != nullptr; clicked = clicked->Next()) { for (; clicked != nullptr; clicked = clicked->Next()) {
tmp = new TemplateVehicle(clicked->engine_type); tmp = new TemplateVehicle(clicked->engine_type);

View File

@@ -3993,12 +3993,12 @@ void UpdateViewportSizeZoom(Viewport *vp)
UpdateViewportDirtyBlockLeftMargin(vp); UpdateViewportDirtyBlockLeftMargin(vp);
if (vp->zoom >= ZOOM_LVL_DRAW_MAP) { if (vp->zoom >= ZOOM_LVL_DRAW_MAP) {
memset(vp->map_draw_vehicles_cache.done_hash_bits, 0, sizeof(vp->map_draw_vehicles_cache.done_hash_bits)); memset(vp->map_draw_vehicles_cache.done_hash_bits, 0, sizeof(vp->map_draw_vehicles_cache.done_hash_bits));
vp->map_draw_vehicles_cache.vehicle_pixels.assign(vp->width * vp->height, false); vp->map_draw_vehicles_cache.vehicle_pixels.assign(vp->ScreenArea(), false);
if (BlitterFactory::GetCurrentBlitter()->GetScreenDepth() == 32) { if (BlitterFactory::GetCurrentBlitter()->GetScreenDepth() == 32) {
vp->land_pixel_cache.assign(vp->height * vp->width * 4, 0xD7); vp->land_pixel_cache.assign(vp->ScreenArea() * 4, 0xD7);
} else { } else {
vp->land_pixel_cache.assign(vp->height * vp->width, 0xD7); vp->land_pixel_cache.assign(vp->ScreenArea(), 0xD7);
} }
} else { } else {
vp->map_draw_vehicles_cache.vehicle_pixels.clear(); vp->map_draw_vehicles_cache.vehicle_pixels.clear();
@@ -4108,7 +4108,7 @@ void MarkViewportDirty(Viewport * const vp, int left, int top, int right, int bo
uint bitdepth = BlitterFactory::GetCurrentBlitter()->GetScreenDepth() / 8; uint bitdepth = BlitterFactory::GetCurrentBlitter()->GetScreenDepth() / 8;
uint8 *land_cache = vp->land_pixel_cache.data() + ((l + (t * vp->width)) * bitdepth); uint8 *land_cache = vp->land_pixel_cache.data() + ((l + (t * vp->width)) * bitdepth);
while (--h) { while (--h) {
memset(land_cache, 0xD7, w * bitdepth); memset(land_cache, 0xD7, (size_t)w * bitdepth);
land_cache += vp->width * bitdepth; land_cache += vp->width * bitdepth;
} }
} }

View File

@@ -79,6 +79,11 @@ struct Viewport {
this->update_vehicles = false; this->update_vehicles = false;
} }
size_t ScreenArea() const
{
return ((size_t)this->width) * ((size_t)this->height);
}
private: private:
uint GetDirtyBlockShift() const uint GetDirtyBlockShift() const
{ {