Fix for [#36374] Read unitialized memory in Freestyle.
A variable keeping a bounding box was referenced after it was flagged as empty.
This commit is contained in:
@@ -290,6 +290,8 @@ int Controller::LoadMesh(Render *re, SceneRenderLayer *srl)
|
||||
|
||||
_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 @@ void Controller::DeleteWingedEdge()
|
||||
|
||||
// clears the grid
|
||||
_Grid.clear();
|
||||
_Scene3dBBox.clear();
|
||||
_SceneNumFaces = 0;
|
||||
_minEdgeSize = DBL_MAX;
|
||||
}
|
||||
@@ -540,8 +543,8 @@ void Controller::ComputeViewMap()
|
||||
}
|
||||
_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());
|
||||
|
||||
@@ -211,6 +211,7 @@ private:
|
||||
FastGrid _Grid;
|
||||
//HashGrid _Grid;
|
||||
|
||||
BBox<Vec3r> _Scene3dBBox;
|
||||
unsigned int _SceneNumFaces;
|
||||
real _minEdgeSize;
|
||||
real _EPSILON;
|
||||
|
||||
@@ -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 @@ public:
|
||||
|
||||
inline BBox<Point>& operator=(const BBox<Point>& b)
|
||||
{
|
||||
BLI_assert(!b.empty());
|
||||
_min = b.getMin();
|
||||
_max = b.getMax();
|
||||
_empty = false;
|
||||
@@ -103,6 +106,7 @@ public:
|
||||
|
||||
inline BBox<Point>& operator+=(const BBox<Point>& b)
|
||||
{
|
||||
BLI_assert(!b.empty());
|
||||
if (_empty) {
|
||||
_min = b.getMin();
|
||||
_max = b.getMax();
|
||||
|
||||
Reference in New Issue
Block a user