diff --git a/engine.c b/engine.c index 3d8e9af126..1b9138fafa 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 ac3c2eee49..c39f751306 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;