Fix crash in delaunay C interface test.
The test forgot to set the new need_ids field, which luckily exposed a bug in the C api for delaunay when that field is false. Fixed the bug and the test, and added a test for the need_ids false case.
This commit is contained in:
parent
75c9788c27
commit
9471715720
|
@ -2851,10 +2851,12 @@ extern "C" ::CDT_result *BLI_delaunay_2d_cdt_calc(const ::CDT_input *input,
|
|||
for (int e = 0; e < ne; ++e) {
|
||||
tot_e_orig += res.edge_orig[e].size();
|
||||
}
|
||||
for (int f = 0; f < nf; ++f) {
|
||||
}
|
||||
for (int f = 0; f < nf; ++f) {
|
||||
if (input->need_ids) {
|
||||
tot_f_orig += res.face_orig[f].size();
|
||||
tot_f_lens += res.face[f].size();
|
||||
}
|
||||
tot_f_lens += res.face[f].size();
|
||||
}
|
||||
|
||||
output->vert_coords = static_cast<decltype(output->vert_coords)>(
|
||||
|
|
|
@ -1756,9 +1756,34 @@ TEST(delaunay_d, CintTwoFace)
|
|||
input.faces_len_table = faces_len;
|
||||
input.faces_start_table = faces_start;
|
||||
input.epsilon = 1e-5f;
|
||||
input.need_ids = false;
|
||||
::CDT_result *output = BLI_delaunay_2d_cdt_calc(&input, CDT_FULL);
|
||||
BLI_delaunay_2d_cdt_free(output);
|
||||
}
|
||||
|
||||
TEST(delaunay_d, CintTwoFaceNoIds)
|
||||
{
|
||||
float vert_coords[][2] = {
|
||||
{0.0, 0.0}, {1.0, 0.0}, {0.5, 1.0}, {1.1, 1.0}, {1.1, 0.0}, {1.6, 1.0}};
|
||||
int faces[] = {0, 1, 2, 3, 4, 5};
|
||||
int faces_len[] = {3, 3};
|
||||
int faces_start[] = {0, 3};
|
||||
|
||||
::CDT_input input;
|
||||
input.verts_len = 6;
|
||||
input.edges_len = 0;
|
||||
input.faces_len = 2;
|
||||
input.vert_coords = vert_coords;
|
||||
input.edges = nullptr;
|
||||
input.faces = faces;
|
||||
input.faces_len_table = faces_len;
|
||||
input.faces_start_table = faces_start;
|
||||
input.epsilon = 1e-5f;
|
||||
input.need_ids = true;
|
||||
::CDT_result *output = BLI_delaunay_2d_cdt_calc(&input, CDT_FULL);
|
||||
BLI_delaunay_2d_cdt_free(output);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if DO_TEXT_TESTS
|
||||
|
|
Loading…
Reference in New Issue