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 | |
| 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')
| -rw-r--r-- | src/ChangeLog | 10 | ||||
| -rw-r--r-- | src/eval.c | 3 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index e283d2bb48c..46a466d060d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,15 @@ | |||
| 1 | 2013-02-14 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2013-02-14 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 2 | ||
| 3 | Backport GCPRO fix from trunk (Bug#13650). | ||
| 4 | The bug was reported for AIX before today's changes. | ||
| 5 | I reproduced the problem on Fedora 17 x86-64 when setting | ||
| 6 | GC_MARK_STACK by hand, and I presume it occurs with default | ||
| 7 | configurations on HP-UX and Unixware. | ||
| 8 | Trunk fix on 2013-01-14 by Dmitry Antipov <dmantipov@yandex.ru>: | ||
| 9 | Fix compilation with GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE. | ||
| 10 | * eval.c (eval_sub): Protect `form' from being GCed before its | ||
| 11 | car and cdr becomes protected with the backtrace entry. | ||
| 12 | |||
| 3 | Fix AIX port (Bug#13650). | 13 | Fix AIX port (Bug#13650). |
| 4 | * lisp.h (XPNTR) [!USE_LSB_TAG && DATA_SEG_BITS]: | 14 | * lisp.h (XPNTR) [!USE_LSB_TAG && DATA_SEG_BITS]: |
| 5 | Fix bug introduced in 2012-07-27 change. DATA_SEG_BITS, if set, | 15 | Fix bug introduced in 2012-07-27 change. DATA_SEG_BITS, if set, |
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 | { |