summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-06-02 19:12:28 +0000
committerrubidium <rubidium@openttd.org>2009-06-02 19:12:28 +0000
commit2fc0cb3e76ec36826056c661555b925b3ce43fe3 (patch)
tree3abde6b4e39242c5d4c8f255f5f4b8d4403b0b47
parent78a25e84e9d7935404f13c041e8a93c4e9b6ff47 (diff)
downloadopenttd-2fc0cb3e76ec36826056c661555b925b3ce43fe3.tar.xz
(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.
-rw-r--r--src/aircraft.h2
-rw-r--r--src/effectvehicle_base.h2
-rw-r--r--src/roadveh.h2
-rw-r--r--src/ship.h2
-rw-r--r--src/train.h2
-rw-r--r--src/vehicle_base.h2
6 files changed, 12 insertions, 0 deletions
diff --git a/src/aircraft.h b/src/aircraft.h
index 1977b8249..b782aae50 100644
--- a/src/aircraft.h
+++ b/src/aircraft.h
@@ -100,6 +100,8 @@ struct Aircraft : public SpecializedVehicle<Aircraft, VEH_AIRCRAFT> {
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(); }
diff --git a/src/effectvehicle_base.h b/src/effectvehicle_base.h
index 15c100b06..1f99661eb 100644
--- a/src/effectvehicle_base.h
+++ b/src/effectvehicle_base.h
@@ -19,6 +19,8 @@ struct EffectVehicle : public SpecializedVehicle<EffectVehicle, VEH_EFFECT> {
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() {}
diff --git a/src/roadveh.h b/src/roadveh.h
index 7a248b8e7..687cbd313 100644
--- a/src/roadveh.h
+++ b/src/roadveh.h
@@ -133,6 +133,8 @@ struct RoadVehicle : public SpecializedVehicle<RoadVehicle, VEH_ROAD> {
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(); }
diff --git a/src/ship.h b/src/ship.h
index 7e1b2ec6d..01e337eea 100644
--- a/src/ship.h
+++ b/src/ship.h
@@ -20,6 +20,8 @@ void GetShipSpriteSize(EngineID engine, uint &width, uint &height);
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(); }
diff --git a/src/train.h b/src/train.h
index bcf005472..b52b52396 100644
--- a/src/train.h
+++ b/src/train.h
@@ -314,6 +314,8 @@ struct Train : public SpecializedVehicle<Train, VEH_TRAIN> {
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(); }
diff --git a/src/vehicle_base.h b/src/vehicle_base.h
index b4a43e2ae..b6bcbb4b6 100644
--- a/src/vehicle_base.h
+++ b/src/vehicle_base.h
@@ -584,6 +584,8 @@ struct DisasterVehicle : public SpecializedVehicle<DisasterVehicle, VEH_DISASTER
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() {}