Diff between 2565283cbb57f0962fae7f33f1c5b91bd88f54e2 and 75cd5b382e44d78e664f339e677efb44e6e21808

Changed Files

File Additions Deletions Status
mesh/model.c +4 -1 modified

Full Patch

diff --git a/mesh/model.c b/mesh/model.c
index 034d544..90bb62d 100644
--- a/mesh/model.c
+++ b/mesh/model.c
@@ -40,6 +40,9 @@
 #include "mesh/util.h"
 #include "mesh/model.h"
 
+/* Divide and round to ceiling (up) to calculate segment count */
+#define CEILDIV(val, div) (((val) + (div) - 1) / (div))
+
 struct mesh_model {
 	const struct mesh_model_ops *cbs;
 	void *user_data;
@@ -451,7 +454,7 @@ static bool msg_send(struct mesh_node *node, bool credential, uint16_t src,
 
 	/* Use large MIC if it doesn't affect segmentation */
 	if (msg_len > 11 && msg_len <= 376) {
-		if ((out_len / 12) == ((out_len + 4) / 12)) {
+		if (CEILDIV(out_len, 12) == CEILDIV(out_len + 4, 12)) {
 			szmic = true;
 			out_len = msg_len + sizeof(uint64_t);
 		}