Forráskód Böngészése

Fix: Fix possible division by zero

- closes https://github.com/assimp/assimp/issues/4860
Kim Kulling 2 éve
szülő
commit
96b071bdb1
1 módosított fájl, 5 hozzáadás és 3 törlés
  1. 5 3
      code/AssetLib/LWO/LWOAnimation.cpp

+ 5 - 3
code/AssetLib/LWO/LWOAnimation.cpp

@@ -162,8 +162,11 @@ void AnimResolver::UpdateAnimRangeSetup() {
         const double my_last = (*it).keys.back().time;
 
         const double delta = my_last - my_first;
+        if (delta == 0.0) {
+            continue;
+        }
+        
         const size_t old_size = (*it).keys.size();
-
         const float value_delta = (*it).keys.back().value - (*it).keys.front().value;
 
         // NOTE: We won't handle reset, linear and constant here.
@@ -176,8 +179,7 @@ void AnimResolver::UpdateAnimRangeSetup() {
         case LWO::PrePostBehaviour_Oscillate: {
             const double start_time = delta - std::fmod(my_first - first, delta);
             std::vector<LWO::Key>::iterator n = std::find_if((*it).keys.begin(), (*it).keys.end(),
-                                                    [start_time](double t) { return start_time > t; }),
-                                            m;
+                                                    [start_time](double t) { return start_time > t; }), m;
 
             size_t ofs = 0;
             if (n != (*it).keys.end()) {