Changeset - r12090:c20f83257241
[Not reviewed]
master
0 6 0
rubidium - 15 years ago 2009-06-02 19:12:28
rubidium@openttd.org
(svn r16505) -Fix [FS#2951] (r16472): since g++ 4.4 the implicit (default) constructor will zero the whole class. This caused all vehicle indices to be 0, which causes all kinds of trouble.
6 files changed with 12 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/aircraft.h
Show inline comments
 
@@ -100,6 +100,8 @@ struct Aircraft : public SpecializedVehi
 
	StationID targetairport;
 
	byte state;
 

	
 
	/** We don't want GCC to zero our struct! It already is zeroed and has an index! */
 
	Aircraft() : SpecializedVehicle<Aircraft, VEH_AIRCRAFT>() {}
 
	/** We want to 'destruct' the right class. */
 
	virtual ~Aircraft() { this->PreDestructor(); }
 

	
src/effectvehicle_base.h
Show inline comments
 
@@ -19,6 +19,8 @@ struct EffectVehicle : public Specialize
 
	uint16 animation_state;
 
	byte animation_substate;
 

	
 
	/** We don't want GCC to zero our struct! It already is zeroed and has an index! */
 
	EffectVehicle() : SpecializedVehicle<EffectVehicle, VEH_EFFECT>() {}
 
	/** We want to 'destruct' the right class. */
 
	virtual ~EffectVehicle() {}
 

	
src/roadveh.h
Show inline comments
 
@@ -133,6 +133,8 @@ struct RoadVehicle : public SpecializedV
 
	RoadType roadtype;
 
	RoadTypes compatible_roadtypes;
 

	
 
	/** We don't want GCC to zero our struct! It already is zeroed and has an index! */
 
	RoadVehicle() : SpecializedVehicle<RoadVehicle, VEH_ROAD>() {}
 
	/** We want to 'destruct' the right class. */
 
	virtual ~RoadVehicle() { this->PreDestructor(); }
 

	
src/ship.h
Show inline comments
 
@@ -20,6 +20,8 @@ void GetShipSpriteSize(EngineID engine, 
 
struct Ship: public SpecializedVehicle<Ship, VEH_SHIP> {
 
	TrackBitsByte state;
 

	
 
	/** We don't want GCC to zero our struct! It already is zeroed and has an index! */
 
	Ship() : SpecializedVehicle<Ship, VEH_SHIP>() {}
 
	/** We want to 'destruct' the right class. */
 
	virtual ~Ship() { this->PreDestructor(); }
 

	
src/train.h
Show inline comments
 
@@ -314,6 +314,8 @@ struct Train : public SpecializedVehicle
 
	RailTypeByte railtype;
 
	RailTypes compatible_railtypes;
 

	
 
	/** We don't want GCC to zero our struct! It already is zeroed and has an index! */
 
	Train() : SpecializedVehicle<Train, VEH_TRAIN>() {}
 
	/** We want to 'destruct' the right class. */
 
	virtual ~Train() { this->PreDestructor(); }
 

	
src/vehicle_base.h
Show inline comments
 
@@ -584,6 +584,8 @@ struct DisasterVehicle : public Speciali
 
	uint16 image_override;
 
	VehicleID big_ufo_destroyer_target;
 

	
 
	/** We don't want GCC to zero our struct! It already is zeroed and has an index! */
 
	DisasterVehicle() : SpecializedVehicle<DisasterVehicle, VEH_DISASTER>() {}
 
	/** We want to 'destruct' the right class. */
 
	virtual ~DisasterVehicle() {}
 

	
0 comments (0 inline, 0 general)