This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 0bd69b4ba505516de36af6c47fcc171c2aeefbda Author: Kacper Michajłow <[email protected]> AuthorDate: Wed Sep 30 00:10:42 2026 +0200 Commit: Kacper Michajłow <[email protected]> CommitDate: Wed Sep 30 14:40:12 2026 +0000 avutil/tests/rational: fix the av_q2intfloat() checks The denominator loop multiplied an int past INT_MAX after 3^19, step it in int64_t over the same values. Compare infinities and NaNs exactly, the relative tolerance accepted an infinity of either sign, and check INT_MIN and zero denominators. Signed-off-by: Kacper Michajłow <[email protected]> --- libavutil/tests/rational.c | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/libavutil/tests/rational.c b/libavutil/tests/rational.c index 13090c11d5..dabedd8a0b 100644 --- a/libavutil/tests/rational.c +++ b/libavutil/tests/rational.c @@ -23,6 +23,23 @@ #include "libavutil/integer.h" #include "libavutil/intfloat.h" +static int check_q2intfloat(AVRational q) +{ + float f = av_int2float(av_q2intfloat(q)); + float f2 = av_q2d(q); + int fail; + + if (isnan(f) || isnan(f2)) + fail = !isnan(f) || !isnan(f2); + else if (isinf(f) || isinf(f2)) + fail = f != f2; + else + fail = fabs(f - f2) > fabs(f)/5000000; + if (fail) + av_log(NULL, AV_LOG_ERROR, "%d/%d %f %f\n", q.num, q.den, f, f2); + return fail; +} + int main(void) { AVRational a,b,r; @@ -179,18 +196,22 @@ int main(void) } } - for (a.den = 1; a.den < 0x100000000U/3; a.den*=3) { + for (int64_t den = 1; den <= INT_MAX; den *= 3) { + a.den = den; for (a.num = -1; a.num < (1<<27); a.num += 1 + a.num/100) { - float f = av_int2float(av_q2intfloat(a)); - float f2 = av_q2d(a); - if (fabs(f - f2) > fabs(f)/5000000) { - av_log(NULL, AV_LOG_ERROR, "%d/%d %f %f\n", a.num, - a.den, f, f2); + if (check_q2intfloat(a)) return 1; - } - } } + static const AVRational q2intfloat_list[] = { + {INT_MIN, 1}, {1, INT_MIN}, {INT_MIN, INT_MIN}, {INT_MIN, -1}, {-1, INT_MIN}, + {INT_MAX, INT_MIN}, {INT_MIN, INT_MAX}, {-3, -7}, {3, -7}, + {1, 0}, {-1, 0}, {INT_MIN, 0}, {0, 0}, {0, 1}, {0, INT_MIN}, + }; + + for (i = 0; i < FF_ARRAY_ELEMS(q2intfloat_list); i++) + ret |= check_q2intfloat(q2intfloat_list[i]); + return ret; } -- To stop receiving notification emails like this one, please contact [email protected]. _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
