commit 2bd7f24ce053392bb47e0822f59d4aadb0530ca4
parent 3aeadb054cbc5da7cfd5743b493b8a23964a440c
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Tue, 21 Feb 2023 15:54:35 +0100
Fix warnings in release build
Diffstat:
2 files changed, 29 insertions(+), 23 deletions(-)
diff --git a/src/scpr_c.h b/src/scpr_c.h
@@ -197,16 +197,20 @@ pair_eq
#include <rsys/hash_table.h>
/* An htable to keep track of registered components */
+#pragma pack(push, 1) /* Avoid padding */
struct intersector_component {
scpr_polygon* polygon;
uint32_t component;
+ /* If there is padding, hashing reports uninitialized data in htable code */
};
+#pragma pack(pop)
static FINLINE void
component_init(struct mem_allocator* alloc, struct intersector_component* key)
{
ASSERT(alloc && key);
(void)alloc;
key->polygon = NULL;
+ key->component = UINT32_MAX;
}
static INLINE char
component_eq
diff --git a/src/scpr_intersector.c b/src/scpr_intersector.c
@@ -166,6 +166,7 @@ init_segment_pair
}
}
+#ifndef NDEBUG
static int
segments_bbox_interacts_1_core
(int64_t lower1, int64_t upper1, int64_t lower2, int64_t upper2)
@@ -175,6 +176,29 @@ segments_bbox_interacts_1_core
return 1;
}
+/* Check if 2 polygon Bbox interact */
+static int
+segments_bbox_interacts
+ (Clipper2Lib::Point64 *v11,
+ Clipper2Lib::Point64 *v12,
+ Clipper2Lib::Point64 *v21,
+ Clipper2Lib::Point64 *v22)
+{
+ int64_t lower1[2], upper1[2], lower2[2], upper2[2];
+ ASSERT(v11 && v12 && v21 && v22);
+ lower1[0] = MMIN(v11->x, v12->x);
+ lower1[1] = MMIN(v11->y, v12->y);
+ lower2[0] = MMIN(v21->x, v22->x);
+ lower2[1] = MMIN(v21->y, v22->y);
+ upper1[0] = MMAX(v11->x, v12->x);
+ upper1[1] = MMAX(v11->y, v12->y);
+ upper2[0] = MMAX(v21->x, v22->x);
+ upper2[1] = MMAX(v21->y, v22->y);
+ if(!segments_bbox_interacts_1_core(lower1[0], upper1[0], lower2[0], upper2[0]))
+ return 0;
+ return segments_bbox_interacts_1_core(lower1[1], upper1[1], lower2[1], upper2[1]);
+}
+
static int
segments_bbox_interacts_1
(uint32_t seg_idx1,
@@ -223,6 +247,7 @@ segments_bbox_interacts_1
}
return segments_bbox_interacts_1_core(lower1, upper1, lower2, upper2);
}
+#endif
/* Register interaction of 2 segments along 1 dimension */
static res_T
@@ -421,29 +446,6 @@ error:
goto exit;
}
-/* Check if 2 polygon Bbox interact */
-static int
-segments_bbox_interacts
- (Clipper2Lib::Point64 *v11,
- Clipper2Lib::Point64 *v12,
- Clipper2Lib::Point64 *v21,
- Clipper2Lib::Point64 *v22)
-{
- int64_t lower1[2], upper1[2], lower2[2], upper2[2];
- ASSERT(v11 && v12 && v21 && v22);
- lower1[0] = MMIN(v11->x, v12->x);
- lower1[1] = MMIN(v11->y, v12->y);
- lower2[0] = MMIN(v21->x, v22->x);
- lower2[1] = MMIN(v21->y, v22->y);
- upper1[0] = MMAX(v11->x, v12->x);
- upper1[1] = MMAX(v11->y, v12->y);
- upper2[0] = MMAX(v21->x, v22->x);
- upper2[1] = MMAX(v21->y, v22->y);
- if(!segments_bbox_interacts_1_core(lower1[0], upper1[0], lower2[0], upper2[0]))
- return 0;
- return segments_bbox_interacts_1_core(lower1[1], upper1[1], lower2[1], upper2[1]);
-}
-
static int64_t
safe_mul
(int64_t a,