summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2021-02-18 21:17:40 +0000
committerJeremy Harris <jgh146exb@wizmail.org>2021-02-18 21:17:40 +0000
commit0cd6e20a16a80f3f4c868a5161fc630523381ae6 (patch)
tree4d4ed157ded3490b8109ed2a7e2e3a4a0a1f45a1 /src
parent73141a5abf8a3699249e401522fe9174b5aa8a1b (diff)
Debugging: avoid expansion problem with foolish-length list output
Diffstat (limited to 'src')
-rw-r--r--src/src/match.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/src/match.c b/src/src/match.c
index 42145e98e..5f6c1fb01 100644
--- a/src/src/match.c
+++ b/src/src/match.c
@@ -498,8 +498,18 @@ else
}
/* For an unnamed list, use the expanded version in comments */
+#define LIST_LIMIT_PR 2048
-HDEBUG(D_any) if (!ot) ot = string_sprintf("%s in \"%s\"?", name, list);
+HDEBUG(D_any) if (!ot)
+ {
+ int n, m;
+ gstring * g = string_fmt_append(NULL, "%s in \"%n%.*s%n\"",
+ name, &n, LIST_LIMIT_PR, list, &m);
+ if (m - n >= LIST_LIMIT_PR) g = string_catn(g, US"...", 3);
+ g = string_catn(g, US"?", 1);
+ gstring_release_unused(g);
+ ot = string_from_gstring(g);
+ }
/* Now scan the list and process each item in turn, until one of them matches,
or we hit an error. */
@@ -705,7 +715,7 @@ while ((sss = string_nextinlist(&list, &sep, NULL, 0)))
if ((bits & (-bits)) == bits) /* Only one of the two bits is set */
{
HDEBUG(D_lists) debug_printf("%s %s (matched \"%s\"%s)\n", ot,
- (yield == OK)? "yes" : "no", sss, cached);
+ yield == OK ? "yes" : "no", sss, cached);
return yield;
}
}