star-enclosures-2d

Extract enclosures from 2D geometry
git clone git://git.meso-star.fr/star-enclosures-2d.git
Log | Files | Refs | README | LICENSE

commit 9fdd9f40c70952020b1a8d9b3279528bc18c3ca1
parent 4d5ceb86864950381a92e12dc4bc3d048ac1ba33
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Tue,  3 Mar 2020 12:18:05 +0100

Check user callback return validity

Diffstat:
Msrc/senc2d_scene.c | 16+++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/senc2d_scene.c b/src/senc2d_scene.c @@ -167,7 +167,15 @@ senc2d_scene_create goto error; } /* Get media */ - if(media) media(ns, med, ctx); + if(media) { + media(ns, med, ctx); + for(s = SENC2D_FRONT; s <= SENC2D_BACK; s += SENC2D_BACK - SENC2D_FRONT) { + if(med[s] == SENC2D_UNSPECIFIED_MEDIUM || med[s] <= MEDIUM_MAX__) + continue; + res = RES_BAD_ARG; + goto error; + } + } seg_make_key(&seg_key, tmp.vertice_id); p_seg = htable_seg_find(&unique_segments, &seg_key); if(p_seg) { @@ -180,17 +188,15 @@ senc2d_scene_create /* New segment */ ASSERT(ns == htable_seg_size_get(&unique_segments)); OK(htable_seg_set(&unique_segments, &seg_key, &ns)); - for(s = SENC2D_FRONT; s <= SENC2D_BACK; s += (SENC2D_BACK - SENC2D_FRONT)) { + for(s = SENC2D_FRONT; s <= SENC2D_BACK; s += SENC2D_BACK - SENC2D_FRONT) { struct side_range* media_use; size_t m_idx = (med[s] == SENC2D_UNSPECIFIED_MEDIUM) ? 0 : med[s] + 1; - ASSERT(m_idx <= MEDIUM_MAX__); tmp.medium[s] = med[s]; if(m_idx >= scn->next_medium_idx) { medium_id_t medium; - ASSERT(m_idx <= MEDIUM_MAX__); medium = (medium_id_t)m_idx; scn->next_medium_idx = medium; - darray_side_range_resize(&scn->media_use, 1 + m_idx); + OK(darray_side_range_resize(&scn->media_use, 1 + m_idx)); } /* media_use 0 is for SENC2D_UNSPECIFIED_MEDIUM */ media_use = darray_side_range_data_get(&scn->media_use) + m_idx;