On Tue, Nov 17, 2015 at 04:54:10PM -0500, Ganesh Ajjanagadde wrote:
> isnan and isinf are actually macros as per the standard. In particular,
> the existing implementation has incorrect signature. Furthermore, this
> results in undefined behavior for e.g double values outside float range
> as per the standard.
> 
> This patch corrects the undefined behavior for all usage within FFmpeg.
> 
> Note that long double is not handled as it is not used in FFmpeg.
> Furthermore, even if at some point long double gets used, it is likely
> not needed to modify the macro in practice for usage in FFmpeg. See
> below for analysis.
> 
> Getting long double to work strictly per the spec is significantly harder
> since a long double may be an IEEE 128 bit quad (very rare), 80 bit
> extended precision value (on GCC/Clang), or simply double (on recent 
> Microsoft).
> On the other hand, any potential future usage of long double is likely
> for precision (when a platform offers extra precision) and not for range, 
> since
> the range anyway varies and is not as portable as IEEE 754 single/double
> precision. In such cases, the implicit cast to a double is well defined
> and isinf and isnan should work as intended.
> 
> Reviewed-by: Michael Niedermayer <mich...@niedermayer.cc>
> Signed-off-by: Ganesh Ajjanagadde <gajjanaga...@gmail.com>
> ---
>  libavutil/libm.h | 34 ++++++++++++++++++++++++++++++++--
>  1 file changed, 32 insertions(+), 2 deletions(-)

probably ok
maybe wait a day or 2 before pushing so people can test it on more
obscure platforms

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I do not agree with what you have to say, but I'll defend to the death your
right to say it. -- Voltaire

Attachment: signature.asc
Description: Digital signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to