star-cpr

Clip 2D meshes with 2D polygons
git clone git://git.meso-star.fr/star-cpr.git
Log | Files | Refs | README | LICENSE

commit f3b5f1586153fd7588b937c544eebad441d127f1
parent 7cd0a118a05c25332792fcb754c006f5e7fafa86
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Thu, 23 Feb 2023 15:23:16 +0100

BugFix: wrong htable modification

Diffstat:
Msrc/scpr_intersector.c | 14++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/scpr_intersector.c b/src/scpr_intersector.c @@ -260,7 +260,7 @@ register_segment_interaction { res_T res = RES_OK; struct intersector_segment_pair pair; - unsigned char interact, *pinteract; + unsigned char *pinteract; ASSERT(intersector); if(seg_idx1 != seg_idx2) { @@ -271,15 +271,17 @@ register_segment_interaction pinteract = htable_interacting_segments_find(&intersector->interacting_segments, &pair); if(pinteract || allow_pair_creation) { + unsigned char interact; if(!pinteract) { /* First occurence of this pair: create empty record */ - pinteract = &interact; - interact = NO_INTERACTION; + interact = (unsigned char)inter; + } else { + ASSERT((*pinteract | inter) < UCHAR_MAX); + interact = (unsigned char)(*pinteract | inter); } + /* Register this interaction */ - ASSERT((*pinteract | inter) < UCHAR_MAX); - *pinteract = (unsigned char)(*pinteract | inter); ERR(htable_interacting_segments_set(&intersector->interacting_segments, - &pair, pinteract)); + &pair, &interact)); } }