From 83720ac462ab5104e395a29b68805e8a041d1bf6 Mon Sep 17 00:00:00 2001 From: attila Date: Thu, 29 Aug 2024 17:19:58 +0200 Subject: [PATCH] EdgeTable: Fix assertion caused by unnecessarily storing prepending zero levels This partially restores the behaviour prior to commit dda0719d561d2a6dfa20170545c7ffa8d11968a2, in that we will never store a segment if its level equals the last stored level. --- modules/juce_graphics/geometry/juce_EdgeTable.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/juce_graphics/geometry/juce_EdgeTable.cpp b/modules/juce_graphics/geometry/juce_EdgeTable.cpp index 99a647f8b1..0c68dc386d 100644 --- a/modules/juce_graphics/geometry/juce_EdgeTable.cpp +++ b/modules/juce_graphics/geometry/juce_EdgeTable.cpp @@ -549,7 +549,7 @@ void EdgeTable::intersectWithEdgeTableLine (const int y, const int* const otherL int destIndex = 0, destTotal = 0; int level1 = 0, level2 = 0; - int lastX = std::numeric_limits::min(), lastLevel = 0; + int lastLevel = 0; while (! srcLine1.empty() && ! srcLine2.empty()) { @@ -579,7 +579,7 @@ void EdgeTable::intersectWithEdgeTableLine (const int y, const int* const otherL const auto nextLevel = (level1 * (level2 + 1)) / scale; - if (std::exchange (lastX, nextX) < nextX || std::exchange (lastLevel, nextLevel) != nextLevel) + if (std::exchange (lastLevel, nextLevel) != nextLevel) { jassert (isPositiveAndBelow (nextLevel, 256)); @@ -606,7 +606,6 @@ void EdgeTable::intersectWithEdgeTableLine (const int y, const int* const otherL } ++destTotal; - lastLevel = nextLevel; if (! isUsingTempSpace) {