]> code.delx.au - gnu-emacs/commitdiff
Backport GCPRO fix from trunk.
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 14 Feb 2013 22:08:38 +0000 (14:08 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 14 Feb 2013 22:08:38 +0000 (14:08 -0800)
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
src/ChangeLog
src/eval.c

index e283d2bb48c42f3e89c06ff593be4d5c43279bde..46a466d060dde5d01b703e478ba09685174206cf 100644 (file)
@@ -1,5 +1,15 @@
 2013-02-14  Paul Eggert  <eggert@cs.ucla.edu>
 
+       Backport GCPRO fix from trunk (Bug#13650).
+       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.
+
        Fix AIX port (Bug#13650).
        * lisp.h (XPNTR) [!USE_LSB_TAG && DATA_SEG_BITS]:
        Fix bug introduced in 2012-07-27 change.  DATA_SEG_BITS, if set,
index a0db6e0745ceed93a1c4c30157ba745ef9443fa7..a21b2b0576222337323e90439a18a29dbbf95cee 100644 (file)
@@ -2034,7 +2034,10 @@ eval_sub (Lisp_Object form)
     return form;
 
   QUIT;
+
+  GCPRO1 (form);
   maybe_gc ();
+  UNGCPRO;
 
   if (++lisp_eval_depth > max_lisp_eval_depth)
     {