From 7c5fb70e735078e4dc9d61cf9bc631982e758bc9 Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Wed, 24 Sep 2014 15:59:23 +0900 Subject: [PATCH] mark invalid flag --- error.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/error.c b/error.c index aa2e8e42..02ec75a6 100644 --- a/error.c +++ b/error.c @@ -10,6 +10,7 @@ #include "picrin/pair.h" #include "picrin/proc.h" #include "picrin/cont.h" +#include "picrin/data.h" #include "picrin/string.h" #include "picrin/error.h" @@ -121,7 +122,13 @@ pic_push_try(pic_state *pic) void pic_pop_try(pic_state *pic) { - --pic->xp; + struct pic_data *e; + + assert(pic->xp > pic->xpbase); + + e = pic_data_ptr(pic_attr_ref(pic, pic_proc_ptr(pic_attr_ref(pic, *--pic->xp, "@@escape")), "@@escape")); + + ((struct pic_escape *)e->data)->valid = false; } struct pic_error *