Mercurial > hg > openttd
changeset 14975:30a0abfe85ca draft
(svn r19586) -Fix: some false positives in cache validity checks because cache = v->cache doesn't necessarily write all sizeof(Cache) bytes
author | rubidium <rubidium@openttd.org> |
---|---|
date | Thu, 08 Apr 2010 17:07:35 +0000 |
parents | d21b5153e575 |
children | 8b5d0410a028 |
files | src/openttd.cpp |
diffstat | 1 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -1111,7 +1111,9 @@ switch (v->type) { case VEH_ROAD: { RoadVehicle *rv = RoadVehicle::From(v); - RoadVehicleCache cache = rv->rcache; + RoadVehicleCache cache; + memset(&cache, 0, sizeof(cache)); + cache = rv->rcache; RoadVehUpdateCache(rv); if (memcmp(&cache, &rv->rcache, sizeof(RoadVehicleCache)) != 0) { @@ -1124,7 +1126,7 @@ Train *t = Train::From(v); for (Vehicle *u = t; u != NULL; u = u->Next()) length++; - TrainCache *wagons = MallocT<TrainCache>(length); + TrainCache *wagons = CallocT<TrainCache>(length); length = 0; for (Train *u = t; u != NULL; u = u->Next()) wagons[length++] = u->tcache; @@ -1143,7 +1145,9 @@ case VEH_AIRCRAFT: { Aircraft *a = Aircraft::From(v); - AircraftCache cache = a->acache; + AircraftCache cache; + memset(&cache, 0, sizeof(cache)); + cache = a->acache; UpdateAircraftCache(a); if (memcmp(&cache, &a->acache, sizeof(AircraftCache)) != 0) {