[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 3d9d976: Fix undefined behavior in mapbacktrace
From: |
Philipp Stephani |
Subject: |
[Emacs-diffs] master 3d9d976: Fix undefined behavior in mapbacktrace |
Date: |
Mon, 5 Jun 2017 16:10:14 -0400 (EDT) |
branch: master
commit 3d9d976aa476b1c1098359a1215ad1cabd022d33
Author: Philipp Stephani <address@hidden>
Commit: Philipp Stephani <address@hidden>
Fix undefined behavior in mapbacktrace
* src/eval.c (Fmapbacktrace): Don't assume that PDL is still valid.
---
src/eval.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/eval.c b/src/eval.c
index ef96104..8f293c9 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3613,8 +3613,12 @@ returns nil. */)
while (backtrace_p (pdl))
{
+ ptrdiff_t i = pdl - specpdl;
backtrace_frame_apply (function, pdl);
- pdl = backtrace_next (pdl);
+ /* Beware! PDL is no longer valid here because FUNCTION might
+ have caused grow_specpdl to reallocate pdlvec. We must use
+ the saved index, cf. Bug#27258. */
+ pdl = backtrace_next (&specpdl[i]);
}
return Qnil;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 3d9d976: Fix undefined behavior in mapbacktrace,
Philipp Stephani <=