diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 687fa35fd82..e4c0adcc24e 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -1241,10 +1241,12 @@ static void make_edges_mdata_extend(MEdge **r_alledge, int *r_totedge, int totedge = *r_totedge; int totedge_new; EdgeHash *eh; + unsigned int eh_reserve; const MPoly *mp; int i; - eh = BLI_edgehash_new(__func__); + eh_reserve = max_ii(totedge, BLI_EDGEHASH_SIZE_GUESS_FROM_POLYS(totpoly)); + eh = BLI_edgehash_new_ex(__func__, eh_reserve); for (i = 0, mp = mpoly; i < totpoly; i++, mp++) { BKE_mesh_poly_edgehash_insert(eh, mp, mloop + mp->loopstart); @@ -2308,7 +2310,7 @@ void BKE_mesh_convert_mfaces_to_mpolys_ex(ID *id, CustomData *fdata, CustomData CustomData_external_read(fdata, id, CD_MASK_MDISPS, totface_i); } - eh = BLI_edgehash_new(__func__); + eh = BLI_edgehash_new_ex(__func__, totedge_i); /* build edge hash */ me = medge; diff --git a/source/blender/blenkernel/intern/mesh_validate.c b/source/blender/blenkernel/intern/mesh_validate.c index d42b6fd1bbd..294e3bf3e55 100644 --- a/source/blender/blenkernel/intern/mesh_validate.c +++ b/source/blender/blenkernel/intern/mesh_validate.c @@ -216,7 +216,7 @@ int BKE_mesh_validate_arrays(Mesh *mesh, bool do_edge_recalc = false; - EdgeHash *edge_hash = BLI_edgehash_new(__func__); + EdgeHash *edge_hash = BLI_edgehash_new_ex(__func__, totedge); BLI_assert(!(do_fixes && mesh == NULL)); diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c index 0bb27e64c4b..21bcf328317 100644 --- a/source/blender/blenkernel/intern/subsurf_ccg.c +++ b/source/blender/blenkernel/intern/subsurf_ccg.c @@ -1332,7 +1332,7 @@ static void ccgDM_copyFinalLoopArray(DerivedMesh *dm, MLoop *mloop) if (!ccgdm->ehash) { MEdge *medge; - ccgdm->ehash = BLI_edgehash_new(__func__); + ccgdm->ehash = BLI_edgehash_new_ex(__func__, ccgdm->dm.numEdgeData); medge = ccgdm->dm.getEdgeArray((DerivedMesh *)ccgdm); for (i = 0; i < ccgdm->dm.numEdgeData; i++) {