Commit: a917e14afa20a2ca29e8fd8b55382825f296a0cf
Author: Rohan Rathi
Date:   Sun Aug 13 19:26:25 2017 +0530
Branches: soc-2017-normal-tools
https://developer.blender.org/rBa917e14afa20a2ca29e8fd8b55382825f296a0cf

Fixed memalloc bug in lnorspacearr and removed 
BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL flag

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

M       source/blender/bmesh/intern/bmesh_mesh.c
M       source/blender/bmesh/intern/bmesh_opdefines.c
M       source/blender/editors/mesh/editmesh_tools.c

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

diff --git a/source/blender/bmesh/intern/bmesh_mesh.c 
b/source/blender/bmesh/intern/bmesh_mesh.c
index 48f0b2f1804..91c0a9c49db 100644
--- a/source/blender/bmesh/intern/bmesh_mesh.c
+++ b/source/blender/bmesh/intern/bmesh_mesh.c
@@ -1093,6 +1093,7 @@ void BM_lnorspace_rebuild(BMesh *bm, bool preserve_clnor)
                }
        }
 
+       BKE_lnor_spacearr_clear(bm->lnor_spacearr);
        BM_loops_calc_normal_vcos(bm, NULL, NULL, NULL, true, M_PI, r_lnors, 
bm->lnor_spacearr, NULL, cd_loop_clnors_offset, true);
        MEM_freeN(r_lnors);
 
@@ -1154,15 +1155,10 @@ static void BM_lnorspace_err(BMesh *bm)
        temp->lspacearr = NULL;
 
        BKE_lnor_spacearr_init(temp, bm->totloop);
-
-       for (int i = 0; i < bm->totloop; i++) {
-               temp->lspacearr[i] = BKE_lnor_space_create(temp);
-               memcpy(temp->lspacearr[i], bm->lnor_spacearr->lspacearr[i], 
sizeof(MLoopNorSpace));
-       }
        
        int cd_loop_clnors_offset = CustomData_get_offset(&bm->ldata, 
CD_CUSTOMLOOPNORMAL);
        float(*lnors)[3] = MEM_callocN(sizeof(*lnors) * bm->totloop, 
"__func__");
-       BM_loops_calc_normal_vcos(bm, NULL, NULL, NULL, true, M_PI, lnors, 
bm->lnor_spacearr, NULL, cd_loop_clnors_offset, true);
+       BM_loops_calc_normal_vcos(bm, NULL, NULL, NULL, true, M_PI, lnors, 
temp, NULL, cd_loop_clnors_offset, true);
 
        for (int i = 0; i < bm->totloop; i++) {
                int j = 0;
@@ -1183,7 +1179,6 @@ static void BM_lnorspace_err(BMesh *bm)
        BLI_assert(clear);
 
        bm->spacearr_dirty &= ~BM_SPACEARR_DIRTY_ALL;
-
 }
 
 /* Marks the individual clnors to be edited, if multiple selection methods are 
used */
@@ -1433,7 +1428,7 @@ void bmesh_edit_end(BMesh *bm, BMOpTypeFlag type_flag)
 
        /* compute normals, clear temp flags and flush selections */
        if (type_flag & BMO_OPTYPE_FLAG_NORMALS_CALC) {
-               bm->spacearr_dirty |= (BM_SPACEARR_DIRTY | BM_SPACEARR_BMO_SET);
+               bm->spacearr_dirty |= (BM_SPACEARR_DIRTY_ALL);
                BM_mesh_normals_update(bm);
        }
 
diff --git a/source/blender/bmesh/intern/bmesh_opdefines.c 
b/source/blender/bmesh/intern/bmesh_opdefines.c
index 286fe401eae..a55df234264 100644
--- a/source/blender/bmesh/intern/bmesh_opdefines.c
+++ b/source/blender/bmesh/intern/bmesh_opdefines.c
@@ -370,8 +370,7 @@ static BMOpDefine bmo_automerge_def = {
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
         BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_SELECT_VALIDATE |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -391,8 +390,7 @@ static BMOpDefine bmo_collapse_def = {
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
         BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_SELECT_VALIDATE |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -485,8 +483,7 @@ static BMOpDefine bmo_weld_verts_def = {
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
         BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_SELECT_VALIDATE |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -536,8 +533,7 @@ static BMOpDefine bmo_join_triangles_def = {
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
         BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_SELECT_VALIDATE |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -568,8 +564,7 @@ static BMOpDefine bmo_contextual_create_def = {
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
         BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_SELECT_VALIDATE |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -594,8 +589,7 @@ static BMOpDefine bmo_bridge_loops_def = {
        bmo_bridge_loops_exec,
        (BMO_OPTYPE_FLAG_NORMALS_CALC |
         BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_SELECT_VALIDATE |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -620,8 +614,7 @@ static BMOpDefine bmo_grid_fill_def = {
        },
        bmo_grid_fill_exec,
        (BMO_OPTYPE_FLAG_NORMALS_CALC |
-        BMO_OPTYPE_FLAG_SELECT_FLUSH | 
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_FLUSH),
 };
 
 
@@ -644,8 +637,7 @@ static BMOpDefine bmo_holes_fill_def = {
        },
        bmo_holes_fill_exec,
        (BMO_OPTYPE_FLAG_NORMALS_CALC |
-        BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_FLUSH),
 };
 
 
@@ -668,8 +660,7 @@ static BMOpDefine bmo_face_attribute_fill_def = {
         {{'\0'}},
        },
        bmo_face_attribute_fill_exec,
-       (BMO_OPTYPE_FLAG_NORMALS_CALC |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+       (BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -693,8 +684,7 @@ static BMOpDefine bmo_edgeloop_fill_def = {
        },
        bmo_edgeloop_fill_exec,
        (BMO_OPTYPE_FLAG_NORMALS_CALC |
-        BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_FLUSH),
 };
 
 
@@ -719,8 +709,7 @@ static BMOpDefine bmo_edgenet_fill_def = {
        },
        bmo_edgenet_fill_exec,
        (BMO_OPTYPE_FLAG_NORMALS_CALC |
-        BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_FLUSH),
 };
 
 /*
@@ -763,8 +752,7 @@ static BMOpDefine bmo_rotate_def = {
        },
        {{{'\0'}}},  /* no output */
        bmo_rotate_exec,
-       (BMO_OPTYPE_FLAG_NORMALS_CALC |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+       (BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -782,8 +770,7 @@ static BMOpDefine bmo_translate_def = {
        },
        {{{'\0'}}},  /* no output */
        bmo_translate_exec,
-       (BMO_OPTYPE_FLAG_NORMALS_CALC | 
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+       (BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -801,8 +788,7 @@ static BMOpDefine bmo_scale_def = {
        },
        {{{'\0'}}},  /* no output */
        bmo_scale_exec,
-       (BMO_OPTYPE_FLAG_NORMALS_CALC |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+       (BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 
@@ -822,8 +808,7 @@ static BMOpDefine bmo_transform_def = {
        },
        {{{'\0'}}},  /* no output */
        bmo_transform_exec,
-       (BMO_OPTYPE_FLAG_NORMALS_CALC |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+       (BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -905,8 +890,7 @@ static BMOpDefine bmo_extrude_discrete_faces_def = {
         {{'\0'}},
        },
        bmo_extrude_discrete_faces_exec,
-       (BMO_OPTYPE_FLAG_NORMALS_CALC |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+       (BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -927,8 +911,7 @@ static BMOpDefine bmo_extrude_edge_only_def = {
         {{'\0'}},
        },
        bmo_extrude_edge_only_exec,
-       (BMO_OPTYPE_FLAG_NORMALS_CALC |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+       (BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -949,8 +932,7 @@ static BMOpDefine bmo_extrude_vert_indiv_def = {
         {{'\0'}},
        },
        bmo_extrude_vert_indiv_exec,
-       (BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+       (BMO_OPTYPE_FLAG_SELECT_FLUSH),
 };
 
 /*
@@ -973,8 +955,7 @@ static BMOpDefine bmo_connect_verts_def = {
        bmo_connect_verts_exec,
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
-        BMO_OPTYPE_FLAG_SELECT_FLUSH | 
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_FLUSH),
 };
 
 /*
@@ -1042,8 +1023,7 @@ static BMOpDefine bmo_connect_vert_pair_def = {
        bmo_connect_vert_pair_exec,
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
-        BMO_OPTYPE_FLAG_SELECT_FLUSH | 
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_FLUSH),
 };
 
 
@@ -1066,8 +1046,7 @@ static BMOpDefine bmo_extrude_face_region_def = {
         {{'\0'}},
        },
        bmo_extrude_face_region_exec,
-       (BMO_OPTYPE_FLAG_NORMALS_CALC |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+       (BMO_OPTYPE_FLAG_NORMALS_CALC),
 };
 
 /*
@@ -1086,8 +1065,7 @@ static BMOpDefine bmo_dissolve_verts_def = {
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
         BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_SELECT_VALIDATE |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -1109,8 +1087,7 @@ static BMOpDefine bmo_dissolve_edges_def = {
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
         BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_SELECT_VALIDATE |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -1131,8 +1108,7 @@ static BMOpDefine bmo_dissolve_faces_def = {
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
         BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_SELECT_VALIDATE |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -1157,8 +1133,7 @@ static BMOpDefine bmo_dissolve_limit_def = {
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
         BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_SELECT_VALIDATE |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -1179,8 +1154,7 @@ static BMOpDefine bmo_dissolve_degenerate_def = {
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
         BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_SELECT_VALIDATE |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -1204,8 +1178,7 @@ static BMOpDefine bmo_triangulate_def = {
        bmo_triangulate_exec,
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
-        BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_FLUSH),
 };
 
 /*
@@ -1225,8 +1198,7 @@ static BMOpDefine bmo_unsubdivide_def = {
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
         BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_SELECT_VALIDATE |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -1267,8 +1239,7 @@ static BMOpDefine bmo_subdivide_edges_def = {
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
         BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_SELECT_VALIDATE |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -1293,8 +1264,7 @@ static BMOpDefine bmo_subdivide_edgering_def = {
        (BMO_OPTYPE_FLAG_UNTAN_MULTIRES |
         BMO_OPTYPE_FLAG_NORMALS_CALC |
         BMO_OPTYPE_FLAG_SELECT_FLUSH |
-        BMO_OPTYPE_FLAG_SELECT_VALIDATE |
-        BMO_OPTYPE_FLAG_INVALIDATE_CLNOR_ALL),
+        BMO_OPTYPE_FLAG_SELECT_VALIDATE),
 };
 
 /*
@@ -1340,8 +1310,7 @@ stati

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to