diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 07284e248..ccdbd86e2 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -29,11 +29,7 @@ #include #include -#ifdef _WIN32 -# define FIXNUM(x) (_finite(x)?(x):(0)) -#else -# define FIXNUM(x) (finite(x)?(x):(0)) -#endif +#define SAFEDIV(x,y) (((y)!=0)?((x)/(y)):(0)) #ifdef HAVE_CURL static struct tm* GetNightlyTime(std::string str) @@ -1444,10 +1440,10 @@ int cmCTest::CoverageDirectory() float cmet = 0; if ( total_tested + total_untested > 0 && (cov.m_Tested + cov.m_UnTested) > 0) { - cper = (100 * static_cast(cov.m_Tested)/ - static_cast(cov.m_Tested + cov.m_UnTested)); - cmet = ( static_cast(cov.m_Tested + 10) / - static_cast(cov.m_Tested + cov.m_UnTested + 10)); + cper = (100 * SAFEDIV(static_cast(cov.m_Tested), + static_cast(cov.m_Tested + cov.m_UnTested))); + cmet = ( SAFEDIV(static_cast(cov.m_Tested + 10), + static_cast(cov.m_Tested + cov.m_UnTested + 10))); } log << "\tfirst << "\" FullPath=\"" << cov.m_FullPath @@ -1457,11 +1453,11 @@ int cmCTest::CoverageDirectory() << "\t\t"; log.setf(std::ios::fixed, std::ios::floatfield); log.precision(2); - log << FIXNUM(cper) << "\n" + log << (cper) << "\n" << "\t\t"; log.setf(std::ios::fixed, std::ios::floatfield); log.precision(2); - log << FIXNUM(cmet) << "\n" + log << (cmet) << "\n" << "\t" << std::endl; ccount ++; } @@ -1476,8 +1472,8 @@ int cmCTest::CoverageDirectory() } int total_lines = total_tested + total_untested; - float percent_coverage = 100 * static_cast(total_tested) / - static_cast(total_lines); + float percent_coverage = 100 * SAFEDIV(static_cast(total_tested), + static_cast(total_lines)); if ( total_lines == 0 ) { percent_coverage = 0; @@ -1491,7 +1487,7 @@ int cmCTest::CoverageDirectory() << "\t"; log.setf(std::ios::fixed, std::ios::floatfield); log.precision(2); - log << FIXNUM(percent_coverage)<< "\n" + log << (percent_coverage)<< "\n" << "\t" << end_time << "\n" << "\n" << "" << std::endl; @@ -1503,7 +1499,7 @@ int cmCTest::CoverageDirectory() std::cout.setf(std::ios::fixed, std::ios::floatfield); std::cout.precision(2); - std::cout << FIXNUM(percent_coverage) << "%" << std::endl; + std::cout << (percent_coverage) << "%" << std::endl; return 1;