summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--match.c2
2 files changed, 8 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 8e548a89..ca9ae1ff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2014-03-09 Kaz Kylheku <kaz@kylheku.com>
+ * match.c (v_trailer): Fix segfault. The code which
+ helps implement the special interaction between @(accept) and
+ @(trailer) was not handling the situation when there is not
+ current unwind exit point.
+
+2014-03-09 Kaz Kylheku <kaz@kylheku.com>
+
* parser.l: Syntactic tweak. Do not allow the "extra"
constituent chars # or ^ to start the symbol name after an @.
Prior to this change @^a is a "meta-symbol" whose name is "^a",
diff --git a/match.c b/match.c
index a82f47da..9b2a6900 100644
--- a/match.c
+++ b/match.c
@@ -2129,7 +2129,7 @@ static val v_trailer(match_files_ctx *c)
*/
uw_unwind {
uw_frame_t *ex = uw_current_exit_point();
- if (ex->uw.type == UW_BLOCK && ex->bl.protocol == accept_s)
+ if (ex && ex->uw.type == UW_BLOCK && ex->bl.protocol == accept_s)
rplacd(ex->bl.result, cons(c->data, c->data_lineno));
}