From e45772713089105c776556655d671102375d9a72 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Wed, 17 Feb 2021 07:56:29 -0800 Subject: @(call): bugfix: matching doesn't continue. * match.c (v_call): This function must propagate the next_spec_k return value, rather than return a short-circuiting match object, which causes the parent to immediately succeed. * tests/008/call.txr: New test case, from Frank Schwidom. * tests/008/call.expected: Likewise. --- match.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'match.c') diff --git a/match.c b/match.c index 1010062d..9782c937 100644 --- a/match.c +++ b/match.c @@ -4516,7 +4516,8 @@ static val v_call(match_files_ctx *c) if (ret == decline_k) sem_error(nil, lit("call: function ~s not found"), funval, nao); - return cons(ctx.bindings, if3(ctx.data, cons(ctx.data, ctx.data_lineno), t)); + c->bindings = ctx.bindings; + return ret; } static val h_do(match_line_ctx *c) -- cgit v1.2.3