From 23fd9ae562765a9aa998f61c9b4085b7001662c1 Mon Sep 17 00:00:00 2001
From: Giovanni La Mura <giovanni.lamura@inaf.it>
Date: Mon, 4 Mar 2024 11:25:55 +0100
Subject: [PATCH] Break FFRF loops on limiting orders

---
 src/libnptm/tra_subs.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/libnptm/tra_subs.cpp b/src/libnptm/tra_subs.cpp
index 8aa13525..47c2b28e 100644
--- a/src/libnptm/tra_subs.cpp
+++ b/src/libnptm/tra_subs.cpp
@@ -81,7 +81,8 @@ void ffrf(
       int ltpo = lpo + l40;
       int imm = l40 * lpo;
       for (int ilmp40 = 1; ilmp40 <= 3; ilmp40++) {
-	if ((l40 == 1 && ilmp40 == 1) || (l40 == cil->le && ilmp40 == 3)) continue; // ilmp40 loop
+	// NOTE: if trapping execution diverges, replace "break" with "continue"
+	if ((l40 == 1 && ilmp40 == 1) || (l40 == cil->le && ilmp40 == 3)) break; // ilmp40 loop
 	int lmpml = ilmp40 - 2;
 	int lmp = l40 + lmpml;
 	uimmp = uim * (-1.0 * lmpml);
@@ -134,7 +135,8 @@ void ffrf(
       int ltpo = lpo + l80;
       int imm = l80 * lpo;
       for (int ilmp80 = 1; ilmp80 <= 3; ilmp80++) {
-	if ((l80 == 1 && ilmp80 == 1) || (l80 == cil->le && ilmp80 == 3)) continue; // ilmp80 loop
+	// NOTE: if trapping execution diverges, replace "break" with "continue"
+	if ((l80 == 1 && ilmp80 == 1) || (l80 == cil->le && ilmp80 == 3)) break; // ilmp80 loop
 	int lmpml = ilmp80 - 2;
 	int lmp = l80 + lmpml;
 	uimmp = uim * (-1.0 * lmpml);
-- 
GitLab