[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master f1ea2b9: Fix lisp_eval_depth in unwind-protect clea
From: |
Paul Eggert |
Subject: |
[Emacs-diffs] master f1ea2b9: Fix lisp_eval_depth in unwind-protect cleanup |
Date: |
Sun, 14 Oct 2018 12:55:03 -0400 (EDT) |
branch: master
commit f1ea2b9e6b63593f5919f60a68a9e19026756ac4
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>
Fix lisp_eval_depth in unwind-protect cleanup
Problem reported by Paul Pogonyshev (Bug#33034).
* src/lisp.h (union specbinding): New member unwind.eval_depth.
* src/eval.c (record_unwind_protect, set_unwind_protect): Set it.
(do_one_unbind): Use it.
---
src/eval.c | 3 +++
src/lisp.h | 1 +
2 files changed, 4 insertions(+)
diff --git a/src/eval.c b/src/eval.c
index 42c275d..a51d0c9 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3429,6 +3429,7 @@ record_unwind_protect (void (*function) (Lisp_Object),
Lisp_Object arg)
specpdl_ptr->unwind.kind = SPECPDL_UNWIND;
specpdl_ptr->unwind.func = function;
specpdl_ptr->unwind.arg = arg;
+ specpdl_ptr->unwind.eval_depth = lisp_eval_depth;
grow_specpdl ();
}
@@ -3501,6 +3502,7 @@ do_one_unbind (union specbinding *this_binding, bool
unwinding,
switch (this_binding->kind)
{
case SPECPDL_UNWIND:
+ lisp_eval_depth = this_binding->unwind.eval_depth;
this_binding->unwind.func (this_binding->unwind.arg);
break;
case SPECPDL_UNWIND_ARRAY:
@@ -3595,6 +3597,7 @@ set_unwind_protect (ptrdiff_t count, void (*func)
(Lisp_Object),
p->unwind.kind = SPECPDL_UNWIND;
p->unwind.func = func;
p->unwind.arg = arg;
+ p->unwind.eval_depth = lisp_eval_depth;
}
void
diff --git a/src/lisp.h b/src/lisp.h
index 5ecc48b..a7a26ef 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3071,6 +3071,7 @@ union specbinding
ENUM_BF (specbind_tag) kind : CHAR_BIT;
void (*func) (Lisp_Object);
Lisp_Object arg;
+ EMACS_INT eval_depth;
} unwind;
struct {
ENUM_BF (specbind_tag) kind : CHAR_BIT;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master f1ea2b9: Fix lisp_eval_depth in unwind-protect cleanup,
Paul Eggert <=