summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--match.c4
-rw-r--r--tests/012/stack2.expected1
-rw-r--r--tests/012/stack2.txr8
3 files changed, 13 insertions, 0 deletions
diff --git a/match.c b/match.c
index 3f47ee05..a7a22f4b 100644
--- a/match.c
+++ b/match.c
@@ -1533,6 +1533,8 @@ static val do_match_line(match_line_ctx *c)
{
val lfe_save = set_last_form_evaled(nil);
+ gc_stack_check();
+
while (c->specline) {
val elem = first(c->specline);
@@ -4616,6 +4618,8 @@ static val match_files(match_files_ctx c)
{
gc_hint(c.data);
+ gc_stack_check();
+
for (; c.spec; c.spec = rest(c.spec),
c.data = rest(c.data),
c.data_lineno = plus(c.data_lineno, one))
diff --git a/tests/012/stack2.expected b/tests/012/stack2.expected
new file mode 100644
index 00000000..cad99e12
--- /dev/null
+++ b/tests/012/stack2.expected
@@ -0,0 +1 @@
+caught
diff --git a/tests/012/stack2.txr b/tests/012/stack2.txr
new file mode 100644
index 00000000..df9e209a
--- /dev/null
+++ b/tests/012/stack2.txr
@@ -0,0 +1,8 @@
+@(define recur ())
+@(recur)
+@(end)
+@(try)
+@(recur)
+@(catch stack-overflow (arg))
+@(do (put-line "caught"))
+@(end)