summaryrefslogtreecommitdiffstats
path: root/opt.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2017-09-17 12:11:11 -0400
committerTavian Barnes <tavianator@tavianator.com>2017-09-17 12:11:11 -0400
commit5559b9ed33db3e88c6576f1a43ce48b123462e8d (patch)
treeac162579f26144fa9dc637174fafab587a409c90 /opt.c
parent86d790e134d5a12e569e1d78804bc5a54ca9ed25 (diff)
downloadbfs-5559b9ed33db3e88c6576f1a43ce48b123462e8d.tar.xz
opt: Fix -depth with arguments bigger than INT_MAX
Diffstat (limited to 'opt.c')
-rw-r--r--opt.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/opt.c b/opt.c
index 717af90..330f804 100644
--- a/opt.c
+++ b/opt.c
@@ -120,14 +120,18 @@ static void debug_opt(const struct opt_state *state, const char *format, ...) {
}
/** Update the inferred mindepth. */
-static void update_mindepth(struct opt_facts *facts, int mindepth) {
+static void update_mindepth(struct opt_facts *facts, long long mindepth) {
if (mindepth > facts->mindepth) {
- facts->mindepth = mindepth;
+ if (mindepth > INT_MAX) {
+ facts->maxdepth = -1;
+ } else {
+ facts->mindepth = mindepth;
+ }
}
}
/** Update the inferred maxdepth. */
-static void update_maxdepth(struct opt_facts *facts, int maxdepth) {
+static void update_maxdepth(struct opt_facts *facts, long long maxdepth) {
if (maxdepth < facts->maxdepth) {
facts->maxdepth = maxdepth;
}
@@ -147,7 +151,7 @@ static void infer_depth_facts(struct opt_state *state, const struct expr *expr)
break;
case CMP_GREATER:
- if (expr->idata == INT_MAX) {
+ if (expr->idata == LONG_LONG_MAX) {
// Avoid overflow
state->facts_when_true.maxdepth = -1;
} else {