[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59460] trunk/blender/source/blender/ freestyle/intern: Fix for [#36374] Read unitialized memory in Freestyle.

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Sat Aug 24 13:42:00 CEST 2013


Revision: 59460
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59460
Author:   kjym3
Date:     2013-08-24 11:42:00 +0000 (Sat, 24 Aug 2013)
Log Message:
-----------
Fix for [#36374] Read unitialized memory in Freestyle.
A variable keeping a bounding box was referenced after it was flagged as empty.

Modified Paths:
--------------
    trunk/blender/source/blender/freestyle/intern/application/Controller.cpp
    trunk/blender/source/blender/freestyle/intern/application/Controller.h
    trunk/blender/source/blender/freestyle/intern/geometry/BBox.h

Modified: trunk/blender/source/blender/freestyle/intern/application/Controller.cpp
===================================================================
--- trunk/blender/source/blender/freestyle/intern/application/Controller.cpp	2013-08-24 10:23:41 UTC (rev 59459)
+++ trunk/blender/source/blender/freestyle/intern/application/Controller.cpp	2013-08-24 11:42:00 UTC (rev 59460)
@@ -290,6 +290,8 @@
 
 	_ListOfModels.push_back("Blender_models");
 
+	_Scene3dBBox = _RootNode->bbox();
+
 	_bboxDiag = (_RootNode->bbox().getMax() - _RootNode->bbox().getMin()).norm();
 	if (G.debug & G_DEBUG_FREESTYLE) {
 		cout << "Triangles nb     : " << _SceneNumFaces << endl;
@@ -339,6 +341,7 @@
 
 	// clears the grid
 	_Grid.clear();
+	_Scene3dBBox.clear();
 	_SceneNumFaces = 0;
 	_minEdgeSize = DBL_MAX;
 }
@@ -540,8 +543,8 @@
 	}
 	_Chrono.start();
 	// Build View Map
-	_ViewMap = vmBuilder.BuildViewMap(*_winged_edge, _VisibilityAlgo, _EPSILON, _RootNode->bbox(), _SceneNumFaces);
-	_ViewMap->setScene3dBBox(_RootNode->bbox());
+	_ViewMap = vmBuilder.BuildViewMap(*_winged_edge, _VisibilityAlgo, _EPSILON, _Scene3dBBox, _SceneNumFaces);
+	_ViewMap->setScene3dBBox(_Scene3dBBox);
 
 	if (G.debug & G_DEBUG_FREESTYLE) {
 		printf("ViewMap edge count : %i\n", _ViewMap->viewedges_size());

Modified: trunk/blender/source/blender/freestyle/intern/application/Controller.h
===================================================================
--- trunk/blender/source/blender/freestyle/intern/application/Controller.h	2013-08-24 10:23:41 UTC (rev 59459)
+++ trunk/blender/source/blender/freestyle/intern/application/Controller.h	2013-08-24 11:42:00 UTC (rev 59460)
@@ -211,6 +211,7 @@
 	FastGrid _Grid;
 	//HashGrid _Grid;
 
+	BBox<Vec3r> _Scene3dBBox;
 	unsigned int _SceneNumFaces;
 	real _minEdgeSize;
 	real _EPSILON;

Modified: trunk/blender/source/blender/freestyle/intern/geometry/BBox.h
===================================================================
--- trunk/blender/source/blender/freestyle/intern/geometry/BBox.h	2013-08-24 10:23:41 UTC (rev 59459)
+++ trunk/blender/source/blender/freestyle/intern/geometry/BBox.h	2013-08-24 11:42:00 UTC (rev 59460)
@@ -28,6 +28,8 @@
  *  \date 22/05/2003
  */
 
+#include "BLI_utildefines.h"
+
 #ifdef WITH_CXX_GUARDEDALLOC
 #include "MEM_guardedalloc.h"
 #endif
@@ -95,6 +97,7 @@
 
 	inline BBox<Point>& operator=(const BBox<Point>& b)
 	{
+		BLI_assert(!b.empty());
 		_min = b.getMin();
 		_max = b.getMax();
 		_empty = false;
@@ -103,6 +106,7 @@
 
 	inline BBox<Point>& operator+=(const BBox<Point>& b)
 	{
+		BLI_assert(!b.empty());
 		if (_empty) {
 			_min = b.getMin();
 			_max = b.getMax();




More information about the Bf-blender-cvs mailing list