* fixes some warnings and bugs for VC

[SVN r73328]
This commit is contained in:
Antony Polukhin
2011-07-24 10:56:54 +00:00
parent fd264b0583
commit 0ee6400d5e

View File

@@ -1108,9 +1108,16 @@ namespace boost
return true; return true;
} }
#if (defined _MSC_VER)
# pragma warning( push )
// C4996: This function or variable may be unsafe. Consider using sprintf_s instead
# pragma warning( disable : 4996 )
#endif
template <class T> template <class T>
bool shl_float(float val,T* out) bool shl_float(float val,T* out)
{ using namespace std; { using namespace std;
if (put_inf_nan(start,finish,val)) return true;
finish = start + sprintf(out,"%.*g", static_cast<int>(boost::detail::lcast_get_precision<float >()), val ); finish = start + sprintf(out,"%.*g", static_cast<int>(boost::detail::lcast_get_precision<float >()), val );
return finish > start; return finish > start;
} }
@@ -1118,6 +1125,7 @@ namespace boost
template <class T> template <class T>
bool shl_double(double val,T* out) bool shl_double(double val,T* out)
{ using namespace std; { using namespace std;
if (put_inf_nan(start,finish,val)) return true;
finish = start + sprintf(out,"%.*lg", static_cast<int>(boost::detail::lcast_get_precision<double >()), val ); finish = start + sprintf(out,"%.*lg", static_cast<int>(boost::detail::lcast_get_precision<double >()), val );
return finish > start; return finish > start;
} }
@@ -1125,25 +1133,34 @@ namespace boost
template <class T> template <class T>
bool shl_long_double(long double val,T* out) bool shl_long_double(long double val,T* out)
{ using namespace std; { using namespace std;
if (put_inf_nan(start,finish,val)) return true;
finish = start + sprintf(out,"%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double >()), val ); finish = start + sprintf(out,"%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double >()), val );
return finish > start; return finish > start;
} }
#if (defined _MSC_VER)
# pragma warning( pop )
#endif
#ifndef BOOST_LCAST_NO_WCHAR_T #ifndef BOOST_LCAST_NO_WCHAR_T
bool shl_float(float val,wchar_t* out) bool shl_float(float val,wchar_t* out)
{ using namespace std; { using namespace std;
if (put_inf_nan(start,finish,val)) return true;
finish = start + swprintf(out,finish-start,L"%.*g", static_cast<int>(boost::detail::lcast_get_precision<float >()), val ); finish = start + swprintf(out,finish-start,L"%.*g", static_cast<int>(boost::detail::lcast_get_precision<float >()), val );
return finish > start; return finish > start;
} }
bool shl_double(double val,wchar_t* out) bool shl_double(double val,wchar_t* out)
{ using namespace std; { using namespace std;
if (put_inf_nan(start,finish,val)) return true;
finish = start + swprintf(out,finish-start,L"%.*lg", static_cast<int>(boost::detail::lcast_get_precision<double >()), val ); finish = start + swprintf(out,finish-start,L"%.*lg", static_cast<int>(boost::detail::lcast_get_precision<double >()), val );
return finish > start; return finish > start;
} }
bool shl_long_double(long double val,wchar_t* out) bool shl_long_double(long double val,wchar_t* out)
{ using namespace std; { using namespace std;
if (put_inf_nan(start,finish,val)) return true;
finish = start + swprintf(out,finish-start,L"%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double >()), val ); finish = start + swprintf(out,finish-start,L"%.*Lg", static_cast<int>(boost::detail::lcast_get_precision<long double >()), val );
return finish > start; return finish > start;
} }