patch 9.0.2124: INT overflow detection logic can be simplified
Problem: INT overflow logic can be simplified
Solution: introduce trim_to_int() function
closes: #13556
Signed-off-by: Ernie Rael <errael@raelity.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/cindent.c b/src/cindent.c
index 7ac1f4b..a9b813f 100644
--- a/src/cindent.c
+++ b/src/cindent.c
@@ -1734,7 +1734,7 @@
int divider;
int fraction = 0;
int sw;
- long long t = get_sw_value(buf);
+ long t = get_sw_value(buf);
// needed for cino-(, it will be multiplied by 2 again
if (t > INT_MAX / 2)
@@ -1902,17 +1902,14 @@
{
n *= sw;
if (divider)
- n += (sw * fraction + divider / 2) / divider;
+ n += ((long long)sw * fraction + divider / 2) / divider;
}
++p;
}
if (l[1] == '-')
n = -n;
- if (n > INT_MAX)
- n = INT_MAX;
- else if (n < INT_MIN)
- n = INT_MIN;
+ n = trim_to_int(n);
// When adding an entry here, also update the default 'cinoptions' in
// doc/indent.txt, and add explanation for it!