[Bf-blender-cvs] [7b78532] master: Freestyle: fix wrong arg order, and cleanup confusing loop (both reported by coverity).

Bastien Montagne noreply at git.blender.org
Thu Aug 18 15:20:28 CEST 2016


Commit: 7b78532950f69f82058d462e786e77128744c589
Author: Bastien Montagne
Date:   Thu Aug 18 12:53:33 2016 +0200
Branches: master
https://developer.blender.org/rB7b78532950f69f82058d462e786e77128744c589

Freestyle: fix wrong arg order, and cleanup confusing loop (both reported by coverity).

Error: `origin` and `edge` args were swapped in final `FindOccludee()` call of `ViewMapBuilder::ComputeRayCastingVisibility()`

Cleanup: main for loop in `Strip::createStrip()` was really confusing (though correct),
generated a false positive in coverity scan, now should be cleaner how it loops over its vprev/v/v2
triplet of consecutive items.

===================================================================

M	source/blender/freestyle/intern/stroke/StrokeRep.cpp
M	source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp

===================================================================

diff --git a/source/blender/freestyle/intern/stroke/StrokeRep.cpp b/source/blender/freestyle/intern/stroke/StrokeRep.cpp
index ab06e20..0281278 100644
--- a/source/blender/freestyle/intern/stroke/StrokeRep.cpp
+++ b/source/blender/freestyle/intern/stroke/StrokeRep.cpp
@@ -135,11 +135,11 @@ void Strip::createStrip (const vector<StrokeVertex*>& iStrokeVertices)
 	int orientationErrors = 0;
 
 	//special case of first vertex
-	v = iStrokeVertices.begin();
+	v2 = v = iStrokeVertices.begin();
+	++v2;
 	sv = *v;
 	vPrev = v; //in case the stroke has only 2 vertices;
-	++v;
-	sv2 = *v;
+	sv2 = *v2;
 	Vec2r dir(sv2->getPoint() - sv->getPoint());
 	Vec2r orthDir(-dir[1], dir[0]);
 	if (orthDir.norm() > ZERO)
@@ -189,11 +189,7 @@ void Strip::createStrip (const vector<StrokeVertex*>& iStrokeVertices)
 
 	int i = 2; // 2 because we have already processed the first vertex
 
-	for (vend = iStrokeVertices.end(); v != vend; ++v) {
-		v2 = v;
-		++v2;
-		if (v2 == vend)
-			break;
+	for (vend = iStrokeVertices.end(), ++v, ++v2; v2 != vend; vPrev = v++, ++v2) {
 		sv = (*v);
 		sv2 = (*v2);
 		svPrev = (*vPrev);
@@ -289,8 +285,6 @@ void Strip::createStrip (const vector<StrokeVertex*>& iStrokeVertices)
 		{
 			_vertices[i - 1]->setPoint2d(p - thickness[0] * stripDir);
 		}
-
-		vPrev = v;
 	} // end of for
 
 	//special case of last vertex
diff --git a/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp b/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp
index 77beb1d..380bb0d 100644
--- a/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp
+++ b/source/blender/freestyle/intern/view_map/ViewMapBuilder.cpp
@@ -2099,7 +2099,7 @@ int ViewMapBuilder::ComputeRayCastingVisibility(FEdge *fe, Grid *iGrid, real eps
 	}
 
 	// Find occludee
-	FindOccludee(fe, iGrid, epsilon, oaPolygon, timestamp, u, center, edge, origin, faceVertices);
+	FindOccludee(fe, iGrid, epsilon, oaPolygon, timestamp, u, center, origin, edge, faceVertices);
 
 	return qi;
 }




More information about the Bf-blender-cvs mailing list