Increase thoroughness of vehicle and YAPF cache desync debug checks.
This commit is contained in:
@@ -1289,6 +1289,7 @@ static void CheckCaches()
|
||||
VehicleCache *veh_cache = CallocT<VehicleCache>(length);
|
||||
GroundVehicleCache *gro_cache = CallocT<GroundVehicleCache>(length);
|
||||
TrainCache *tra_cache = CallocT<TrainCache>(length);
|
||||
Vehicle **veh_old = CallocT<Vehicle *>(length);
|
||||
|
||||
length = 0;
|
||||
for (const Vehicle *u = v; u != NULL; u = u->Next()) {
|
||||
@@ -1299,11 +1300,17 @@ static void CheckCaches()
|
||||
case VEH_TRAIN:
|
||||
gro_cache[length] = Train::From(u)->gcache;
|
||||
tra_cache[length] = Train::From(u)->tcache;
|
||||
veh_old[length] = CallocT<Train>(1);
|
||||
MemCpyT((Train *) veh_old[length], Train::From(u));
|
||||
break;
|
||||
case VEH_ROAD:
|
||||
gro_cache[length] = RoadVehicle::From(u)->gcache;
|
||||
veh_old[length] = CallocT<RoadVehicle>(1);
|
||||
MemCpyT((RoadVehicle *) veh_old[length], RoadVehicle::From(u));
|
||||
break;
|
||||
default:
|
||||
veh_old[length] = CallocT<Vehicle>(1);
|
||||
MemCpyT(veh_old[length], u);
|
||||
break;
|
||||
}
|
||||
length++;
|
||||
@@ -1326,6 +1333,30 @@ static void CheckCaches()
|
||||
if (memcmp(&veh_cache[length], &u->vcache, sizeof(VehicleCache)) != 0) {
|
||||
DEBUG(desync, 2, "vehicle cache mismatch: type %i, vehicle %i, company %i, unit number %i, wagon %i", (int)v->type, v->index, (int)v->owner, v->unitnumber, length);
|
||||
}
|
||||
if (veh_old[length]->acceleration != u->acceleration) {
|
||||
DEBUG(desync, 2, "acceleration mismatch: vehicle %i, company %i, unit number %i, wagon %i", v->index, (int)v->owner, v->unitnumber, length);
|
||||
}
|
||||
if (veh_old[length]->breakdown_chance != u->breakdown_chance) {
|
||||
DEBUG(desync, 2, "breakdown_chance mismatch: vehicle %i, company %i, unit number %i, wagon %i", v->index, (int)v->owner, v->unitnumber, length);
|
||||
}
|
||||
if (veh_old[length]->breakdown_ctr != u->breakdown_ctr) {
|
||||
DEBUG(desync, 2, "breakdown_ctr mismatch: vehicle %i, company %i, unit number %i, wagon %i", v->index, (int)v->owner, v->unitnumber, length);
|
||||
}
|
||||
if (veh_old[length]->breakdown_delay != u->breakdown_delay) {
|
||||
DEBUG(desync, 2, "breakdown_delay mismatch: vehicle %i, company %i, unit number %i, wagon %i", v->index, (int)v->owner, v->unitnumber, length);
|
||||
}
|
||||
if (veh_old[length]->breakdowns_since_last_service != u->breakdowns_since_last_service) {
|
||||
DEBUG(desync, 2, "breakdowns_since_last_service mismatch: vehicle %i, company %i, unit number %i, wagon %i", v->index, (int)v->owner, v->unitnumber, length);
|
||||
}
|
||||
if (veh_old[length]->breakdown_severity != u->breakdown_severity) {
|
||||
DEBUG(desync, 2, "breakdown_severity mismatch: vehicle %i, company %i, unit number %i, wagon %i", v->index, (int)v->owner, v->unitnumber, length);
|
||||
}
|
||||
if (veh_old[length]->breakdown_type != u->breakdown_type) {
|
||||
DEBUG(desync, 2, "breakdown_type mismatch: vehicle %i, company %i, unit number %i, wagon %i", v->index, (int)v->owner, v->unitnumber, length);
|
||||
}
|
||||
if (veh_old[length]->vehicle_flags != u->vehicle_flags) {
|
||||
DEBUG(desync, 2, "vehicle_flags mismatch: vehicle %i, company %i, unit number %i, wagon %i", v->index, (int)v->owner, v->unitnumber, length);
|
||||
}
|
||||
switch (u->type) {
|
||||
case VEH_TRAIN:
|
||||
if (memcmp(&gro_cache[length], &Train::From(u)->gcache, sizeof(GroundVehicleCache)) != 0) {
|
||||
@@ -1334,6 +1365,15 @@ static void CheckCaches()
|
||||
if (memcmp(&tra_cache[length], &Train::From(u)->tcache, sizeof(TrainCache)) != 0) {
|
||||
DEBUG(desync, 2, "train cache mismatch: vehicle %i, company %i, unit number %i, wagon %i", v->index, (int)v->owner, v->unitnumber, length);
|
||||
}
|
||||
if (Train::From(veh_old[length])->railtype != Train::From(u)->railtype) {
|
||||
DEBUG(desync, 2, "railtype mismatch: vehicle %i, company %i, unit number %i, wagon %i", v->index, (int)v->owner, v->unitnumber, length);
|
||||
}
|
||||
if (Train::From(veh_old[length])->compatible_railtypes != Train::From(u)->compatible_railtypes) {
|
||||
DEBUG(desync, 2, "compatible_railtypes mismatch: vehicle %i, company %i, unit number %i, wagon %i", v->index, (int)v->owner, v->unitnumber, length);
|
||||
}
|
||||
if (Train::From(veh_old[length])->flags != Train::From(u)->flags) {
|
||||
DEBUG(desync, 2, "flags mismatch: vehicle %i, company %i, unit number %i, wagon %i", v->index, (int)v->owner, v->unitnumber, length);
|
||||
}
|
||||
break;
|
||||
case VEH_ROAD:
|
||||
if (memcmp(&gro_cache[length], &RoadVehicle::From(u)->gcache, sizeof(GroundVehicleCache)) != 0) {
|
||||
@@ -1343,6 +1383,7 @@ static void CheckCaches()
|
||||
default:
|
||||
break;
|
||||
}
|
||||
free(veh_old[length]);
|
||||
length++;
|
||||
}
|
||||
|
||||
@@ -1350,6 +1391,7 @@ static void CheckCaches()
|
||||
free(veh_cache);
|
||||
free(gro_cache);
|
||||
free(tra_cache);
|
||||
free(veh_old);
|
||||
}
|
||||
|
||||
/* Check whether the caches are still valid */
|
||||
|
Reference in New Issue
Block a user