emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r118080: * lisp.h (USE_STACK_STRING): Now true only


From: Paul Eggert
Subject: [Emacs-diffs] trunk r118080: * lisp.h (USE_STACK_STRING): Now true only if USE_STACK CONS.
Date: Thu, 09 Oct 2014 06:54:16 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 118080
revision-id: address@hidden
parent: address@hidden
committer: Paul Eggert <address@hidden>
branch nick: trunk
timestamp: Wed 2014-10-08 23:54:10 -0700
message:
  * lisp.h (USE_STACK_STRING): Now true only if USE_STACK CONS.
  
  On x86 platforms this works around GCC bug 63495
  <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63495>,
  and more generally should fix a portability problem in Emacs.
  Problem reported by Stefan Monnier in:
  http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00261.html
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/lisp.h                     lisp.h-20091113204419-o5vbwnq5f7feedwu-253
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2014-10-09 04:23:09 +0000
+++ b/src/ChangeLog     2014-10-09 06:54:10 +0000
@@ -1,3 +1,12 @@
+2014-10-09  Paul Eggert  <address@hidden>
+
+       * lisp.h (USE_STACK_STRING): Now true only if USE_STACK CONS.
+       On x86 platforms this works around GCC bug 63495
+       <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63495>,
+       and more generally should fix a portability problem in Emacs.
+       Problem reported by Stefan Monnier in:
+       http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00261.html
+
 2014-10-08  Leo Liu  <address@hidden>
 
        Enhance terpri to allow conditionally output a newline.  (Bug#18652)

=== modified file 'src/lisp.h'
--- a/src/lisp.h        2014-10-02 12:27:19 +0000
+++ b/src/lisp.h        2014-10-09 06:54:10 +0000
@@ -4615,13 +4615,16 @@
   double d; intmax_t i; void *p;
 };
 
-/* True for stack-based cons and string implementations.  */
+/* True for stack-based cons and string implementations, respectively.
+   Use stack-based strings only if stack-based cons also works.
+   Otherwise, STACK_CONS would create heap-based cons cells that
+   could point to stack-based strings, which is a no-no.  */
 
 enum
   {
     USE_STACK_CONS = (USE_STACK_LISP_OBJECTS
                      && alignof (union Aligned_Cons) % GCALIGNMENT == 0),
-    USE_STACK_STRING = (USE_STACK_LISP_OBJECTS
+    USE_STACK_STRING = (USE_STACK_CONS
                        && alignof (union Aligned_String) % GCALIGNMENT == 0)
   };
 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]