mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-06 00:07:29 -04:00
Merge pull request #62475 from qgis/backport-62052-to-release-3_44
[Backport release-3_44] fix segfault due to calling qgsDoubleNear with tollerance that can ne…
This commit is contained in:
commit
20c74165b1
@ -1532,6 +1532,7 @@ void QgsLineString::visitPointsByRegularDistance( const double distance, const s
|
||||
double pZ = std::numeric_limits<double>::quiet_NaN();
|
||||
double pM = std::numeric_limits<double>::quiet_NaN();
|
||||
double nextPointDistance = distance;
|
||||
const double eps = 4 * nextPointDistance * std::numeric_limits<double>::epsilon();
|
||||
for ( int i = 1; i < totalPoints; ++i )
|
||||
{
|
||||
double thisX = *x++;
|
||||
@ -1540,7 +1541,7 @@ void QgsLineString::visitPointsByRegularDistance( const double distance, const s
|
||||
double thisM = m ? *m++ : 0.0;
|
||||
|
||||
const double segmentLength = QgsGeometryUtilsBase::distance2D( thisX, thisY, prevX, prevY );
|
||||
while ( nextPointDistance < distanceTraversed + segmentLength || qgsDoubleNear( nextPointDistance, distanceTraversed + segmentLength ) )
|
||||
while ( nextPointDistance < distanceTraversed + segmentLength || qgsDoubleNear( nextPointDistance, distanceTraversed + segmentLength, eps ) )
|
||||
{
|
||||
// point falls on this segment - truncate to segment length if qgsDoubleNear test was actually > segment length
|
||||
const double distanceToPoint = std::min( nextPointDistance - distanceTraversed, segmentLength );
|
||||
|
Loading…
x
Reference in New Issue
Block a user