diff options
| author | Paul Eggert | 2013-02-14 14:08:38 -0800 |
|---|---|---|
| committer | Paul Eggert | 2013-02-14 14:08:38 -0800 |
| commit | 974c7646ec5b2985a50007c9d599154d667df349 (patch) | |
| tree | ad7e887ee050d4a53dcb52afca14562294ad5636 /src/eval.c | |
| parent | 35b3a27e67b60e547ac8bc9388e7724d1f829959 (diff) | |
| download | emacs-974c7646ec5b2985a50007c9d599154d667df349.tar.gz emacs-974c7646ec5b2985a50007c9d599154d667df349.zip | |
Backport GCPRO fix from trunk.
The bug was reported for AIX before today's changes.
I reproduced the problem on Fedora 17 x86-64 when setting
GC_MARK_STACK by hand, and I presume it occurs with default
configurations on HP-UX and Unixware.
Trunk fix on 2013-01-14 by Dmitry Antipov <dmantipov@yandex.ru>:
Fix compilation with GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE.
* eval.c (eval_sub): Protect `form' from being GCed before its
car and cdr becomes protected with the backtrace entry.
Fixes: debbugs:13650
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c index a0db6e0745c..a21b2b05762 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -2034,7 +2034,10 @@ eval_sub (Lisp_Object form) | |||
| 2034 | return form; | 2034 | return form; |
| 2035 | 2035 | ||
| 2036 | QUIT; | 2036 | QUIT; |
| 2037 | |||
| 2038 | GCPRO1 (form); | ||
| 2037 | maybe_gc (); | 2039 | maybe_gc (); |
| 2040 | UNGCPRO; | ||
| 2038 | 2041 | ||
| 2039 | if (++lisp_eval_depth > max_lisp_eval_depth) | 2042 | if (++lisp_eval_depth > max_lisp_eval_depth) |
| 2040 | { | 2043 | { |