From 736823d032404a0cef68b7b0dc5b379052735d7c Mon Sep 17 00:00:00 2001 From: Tim Moore Date: Wed, 14 Jan 2009 09:19:41 +0100 Subject: [PATCH 1/3] FGEnvironment: fix broken copy constructor. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Noticed by Csaba Halász. --- src/Environment/environment.cxx | 50 ++++++++++++++++++--------------- src/Environment/environment.hxx | 2 +- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/src/Environment/environment.cxx b/src/Environment/environment.cxx index 3e50bb459..c51752c55 100644 --- a/src/Environment/environment.cxx +++ b/src/Environment/environment.cxx @@ -118,33 +118,39 @@ _setup_tables () // Implementation of FGEnvironment. //////////////////////////////////////////////////////////////////////// -FGEnvironment::FGEnvironment() - : elevation_ft(0), - visibility_m(32000), - temperature_sea_level_degc(15), - temperature_degc(15), - dewpoint_sea_level_degc(5), // guess - dewpoint_degc(5), - pressure_sea_level_inhg(29.92), - pressure_inhg(29.92), - turbulence_magnitude_norm(0), - turbulence_rate_hz(1), - wind_from_heading_deg(0), - wind_speed_kt(0), - wind_from_north_fps(0), - wind_from_east_fps(0), - wind_from_down_fps(0), - altitude_half_to_sun_m(1000), - altitude_tropo_top_m(10000) +void FGEnvironment::_init() { - _setup_tables(); - _recalc_density(); - _recalc_relative_humidity(); + elevation_ft = 0; + visibility_m = 32000; + temperature_sea_level_degc = 15; + temperature_degc = 15; + dewpoint_sea_level_degc = 5; // guess + dewpoint_degc = 5; + pressure_sea_level_inhg = 29.92; + pressure_inhg = 29.92; + turbulence_magnitude_norm = 0; + turbulence_rate_hz = 1; + wind_from_heading_deg = 0; + wind_speed_kt = 0; + wind_from_north_fps = 0; + wind_from_east_fps = 0; + wind_from_down_fps = 0; + altitude_half_to_sun_m = 1000; + altitude_tropo_top_m = 10000; + _setup_tables(); + _recalc_density(); + _recalc_relative_humidity(); + +} + +FGEnvironment::FGEnvironment() +{ + _init(); } FGEnvironment::FGEnvironment (const FGEnvironment &env) { - FGEnvironment(); + _init(); copy(env); } diff --git a/src/Environment/environment.hxx b/src/Environment/environment.hxx index c952141bd..4d82685aa 100644 --- a/src/Environment/environment.hxx +++ b/src/Environment/environment.hxx @@ -98,7 +98,7 @@ public: virtual void set_altitude_tropo_top_m (double alt); private: - + void _init(); void _recalc_hdgspd (); void _recalc_ne (); From c3d611f7f9ef4866877f1dc085b0cbd316662d29 Mon Sep 17 00:00:00 2001 From: Tim Moore Date: Wed, 14 Jan 2009 11:22:18 +0100 Subject: [PATCH 2/3] HUD::Ladder::draw was capturing the value of a freed temporary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix from Csaba Halász --- src/Instrumentation/HUD/HUD_ladder.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Instrumentation/HUD/HUD_ladder.cxx b/src/Instrumentation/HUD/HUD_ladder.cxx index 9f3136a1c..9181a82a9 100644 --- a/src/Instrumentation/HUD/HUD_ladder.cxx +++ b/src/Instrumentation/HUD/HUD_ladder.cxx @@ -540,7 +540,9 @@ void HUD::Ladder::draw(void) // draw numbers std::ostringstream str; str << i; - const char *num = str.str().c_str(); + // must keep this string, otherwise it will free the c_str! + string num_str = str.str(); + const char *num = num_str.c_str(); int valign = numoffs.y > 0 ? BOTTOM : numoffs.y < 0 ? TOP : VCENTER; draw_text(lo.x - numoffs.x, lo.y + numoffs.y, num, valign | (numoffs.x == 0 ? CENTER : numoffs.x > 0 ? RIGHT : LEFT)); From ad6a8df3ab161788af4fbe534a98164d8e7e9116 Mon Sep 17 00:00:00 2001 From: Tim Moore Date: Wed, 14 Jan 2009 11:33:00 +0100 Subject: [PATCH 3/3] FGClouds: initialize clouds_3d_enabled in constructor. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From Csaba Halász --- src/Environment/fgclouds.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Environment/fgclouds.cxx b/src/Environment/fgclouds.cxx index 04e2dbe60..91166dbab 100644 --- a/src/Environment/fgclouds.cxx +++ b/src/Environment/fgclouds.cxx @@ -51,6 +51,7 @@ FGClouds::FGClouds(FGEnvironmentCtrl * controller) : station_elevation_ft(0.0), _controller( controller ), snd_lightning(NULL), + clouds_3d_enabled(false), last_scenario( "unset" ), last_env_config( new SGPropertyNode() ), last_env_clouds( new SGPropertyNode() )