From f300deb569fbd2800179523adfc1a385f3789ae3 Mon Sep 17 00:00:00 2001 From: Maksym Ivashechkin Date: Mon, 12 Feb 2024 07:16:19 +0000 Subject: [PATCH] Merge pull request #24987 from ivashmak:bugfix_infinite_loop bug fix infinite loop #24987 Fixes #24967 ### Pull Request Readiness Checklist See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request - [x] I agree to contribute to the project under Apache 2 License. - [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV - [x] The PR is proposed to the proper branch - [x] There is a reference to the original bug report and related work - [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable Patch to opencv_extra has the same branch name. - [x] The feature is well documented and sample code can be built with the project CMake Bugfix to #24967 --- modules/calib3d/src/usac/utils.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/calib3d/src/usac/utils.cpp b/modules/calib3d/src/usac/utils.cpp index 204b31cf92..8d95fb9c33 100644 --- a/modules/calib3d/src/usac/utils.cpp +++ b/modules/calib3d/src/usac/utils.cpp @@ -169,6 +169,9 @@ public: int getRealRoots (const std::vector &coeffs, std::vector &real_roots) override { if (coeffs.empty()) return 0; + for (auto c : coeffs) + if (cvIsNaN(c) || cvIsInf(c)) + return 0; Poly input(coeffs); if (input.degree() < 1) return 0;