summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engine.c3
-rw-r--r--newgrf.c6
2 files changed, 7 insertions, 2 deletions
diff --git a/engine.c b/engine.c
index 3d8e9af12..1b9138faf 100644
--- a/engine.c
+++ b/engine.c
@@ -545,8 +545,9 @@ static void DoTriggerVehicle(Vehicle *veh, enum VehicleTrigger trigger, byte bas
rsg = TriggerVehicleSpriteGroup(&_engine_custom_sprites[veh->engine_type][29], veh,
(resolve_callback) TriggerVehicleSpriteGroup);
}
+ new_random_bits = Random();
veh->random_bits &= ~_vsg_bits_to_reseed;
- veh->random_bits |= (first ? (new_random_bits = Random()) : base_random_bits) & _vsg_bits_to_reseed;
+ veh->random_bits |= (first ? new_random_bits : base_random_bits) & _vsg_bits_to_reseed;
switch (trigger) {
case VEHICLE_TRIGGER_NEW_CARGO:
diff --git a/newgrf.c b/newgrf.c
index ac3c2eee4..c39f75130 100644
--- a/newgrf.c
+++ b/newgrf.c
@@ -855,6 +855,7 @@ static bool StationChangeInfo(uint stid, int numinfo, int prop, byte **bufp, int
stat->platforms[l] = number;
}
+ p = 0;
layout = malloc(length * number);
for (l = 0; l < length; l++)
for (p = 0; p < number; p++)
@@ -862,6 +863,7 @@ static bool StationChangeInfo(uint stid, int numinfo, int prop, byte **bufp, int
l--;
p--;
+ assert(p >= 0);
free(stat->layouts[l][p]);
stat->layouts[l][p] = layout;
}
@@ -949,7 +951,7 @@ static void VehicleChangeInfo(byte *buf, int len)
uint8 numprops;
uint8 numinfo;
byte engine;
- EngineInfo *ei;
+ EngineInfo *ei = NULL;
if (len == 1) {
DEBUG(grf, 8) ("Silently ignoring one-byte special sprite 0x00.");
@@ -972,6 +974,8 @@ static void VehicleChangeInfo(byte *buf, int len)
if (feature != GSF_STATION)
ei = &_engine_info[engine + _vehshifts[feature]];
+ /* XXX - Should there not be a check to see if 'ei' is NULL
+ when it is used in the switch below?? -- TrueLight */
buf += 5;