Fix T46247: Side-reported, bbox for zero-verts object with OSD subsurf and GPU comput...
authorBastien Montagne <montagne29@wanadoo.fr>
Fri, 25 Sep 2015 06:38:45 +0000 (08:38 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Fri, 25 Sep 2015 06:38:45 +0000 (08:38 +0200)
Trivial fix, to be backported to final 2.76 if possible.

source/blender/blenkernel/intern/subsurf_ccg.c

index 509ca9cdd196ed74c418fcc7c7df4206f8c65344..05f658e0b2b0807331408e01deb9688255091152 100644 (file)
@@ -848,6 +848,11 @@ static void ccgDM_getMinMax(DerivedMesh *dm, float r_min[3], float r_max[3])
        int i, edgeSize = ccgSubSurf_getEdgeSize(ss);
        int gridSize = ccgSubSurf_getGridSize(ss);
 
+       if (!ccgSubSurf_getNumVerts(ss)) {
+               r_min[0] = r_min[1] = r_min[2] = r_max[0] = r_max[1] = r_max[2] = 0.0f;
+               return;
+       }
+
 #ifdef WITH_OPENSUBDIV
        if (ccgdm->useGpuBackend) {
                ccgSubSurf_getMinMax(ccgdm->ss, r_min, r_max);
@@ -857,9 +862,6 @@ static void ccgDM_getMinMax(DerivedMesh *dm, float r_min[3], float r_max[3])
 
        CCG_key_top_level(&key, ss);
 
-       if (!ccgSubSurf_getNumVerts(ss))
-               r_min[0] = r_min[1] = r_min[2] = r_max[0] = r_max[1] = r_max[2] = 0.0;
-
        for (ccgSubSurf_initVertIterator(ss, &vi); !ccgVertIterator_isStopped(&vi); ccgVertIterator_next(&vi)) {
                CCGVert *v = ccgVertIterator_getCurrent(&vi);
                float *co = ccgSubSurf_getVertData(ss, v);