avutil/softfloat: Fix undefined shift in av_add_sf()
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 10 Oct 2014 17:36:12 +0000 (19:36 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 10 Oct 2014 17:36:12 +0000 (19:36 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavutil/softfloat.h

index fc083e5..8647e6a 100644 (file)
@@ -104,8 +104,10 @@ static inline av_const int av_cmp_sf(SoftFloat a, SoftFloat b){
 
 static inline av_const SoftFloat av_add_sf(SoftFloat a, SoftFloat b){
     int t= a.exp - b.exp;
-    if(t<0) return av_normalize1_sf((SoftFloat){b.exp, b.mant + (a.mant >> (-t))});
-    else    return av_normalize1_sf((SoftFloat){a.exp, a.mant + (b.mant >>   t )});
+    if      (t <-31) return b;
+    else if (t <  0) return av_normalize1_sf((SoftFloat){b.exp, b.mant + (a.mant >> (-t))});
+    else if (t < 32) return av_normalize1_sf((SoftFloat){a.exp, a.mant + (b.mant >>   t )});
+    else             return a;
 }
 
 static inline av_const SoftFloat av_sub_sf(SoftFloat a, SoftFloat b){