From: timoore Date: Tue, 19 May 2009 22:14:04 +0000 (+0000) Subject: Fix two sources of floating point exceptions X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=0ce5f350ff50af85914a0509fdbccda31178d04d;p=flightgear.git Fix two sources of floating point exceptions When a subsystem is updated, dt can be 0 if the program is paused. There may be other subsystems that don't check that dt is non-zero. --- diff --git a/src/Instrumentation/gps.cxx b/src/Instrumentation/gps.cxx index 981c35af2..2d448f575 100644 --- a/src/Instrumentation/gps.cxx +++ b/src/Instrumentation/gps.cxx @@ -479,9 +479,8 @@ GPS::updateTTWNode(UpdateContext& ctx, double distance_m, SGPropertyNode_ptr nod if (ctx.speed_kt > 0.0 && distance_m > 0.0) { TTW = (distance_m * SG_METER_TO_NM) / (ctx.speed_kt / 3600); } - - unsigned int TTW_seconds = (int) (TTW + 0.5); - if (TTW_seconds < 356400) { // That's 99 hours + if (TTW < 356400.5) { // That's 99 hours + unsigned int TTW_seconds = (int) (TTW + 0.5); unsigned int TTW_minutes = 0; unsigned int TTW_hours = 0; char TTW_str[9]; diff --git a/src/Instrumentation/navradio.cxx b/src/Instrumentation/navradio.cxx index bb107b47d..ceeefc8c5 100644 --- a/src/Instrumentation/navradio.cxx +++ b/src/Instrumentation/navradio.cxx @@ -593,16 +593,18 @@ FGNavRadio::update(double dt) // compute the time to intercept selected radial (based on // current and last cross track errors and dt ////////////////////////////////////////////////////////// - double t = 0.0; - if ( inrange && cdi_serviceable ) { - double xrate_ms = (last_xtrack_error - xtrack_error) / dt; - if ( fabs(xrate_ms) > 0.00001 ) { - t = xtrack_error / xrate_ms; - } else { - t = 9999.9; + if (dt > 0) { // Are we paused? + double t = 0.0; + if ( inrange && cdi_serviceable ) { + double xrate_ms = (last_xtrack_error - xtrack_error) / dt; + if ( fabs(xrate_ms) > 0.00001 ) { + t = xtrack_error / xrate_ms; + } else { + t = 9999.9; + } } + time_to_intercept->setDoubleValue( t ); } - time_to_intercept->setDoubleValue( t ); ////////////////////////////////////////////////////////// // compute the amount of glide slope needle deflection