Avoid _setjmp/_longjmp problems with local nonvolatile variables.
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 11 Sep 2012 23:50:28 +0000 (16:50 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 11 Sep 2012 23:50:28 +0000 (16:50 -0700)
commit50f2e553ce21a2901e9f935650018289c11fcc39
tree552cc944b7ba27f3e8e6931709836297214d81f3
parentae1d87e24edc6a5fa4bc291e1b2ea20d7853127c
Avoid _setjmp/_longjmp problems with local nonvolatile variables.

If a nonvolatile local variable is written before a _longjmp to
the frame containing the variable, and is read after the _longjmp,
the value read is indeterminate.  Some local variables of type
'struct handler' and 'struct catchtag' are used in this way, so
mark each of their slots as volatile if the slot can be set before
_longjmp and read afterwards.
* lisp.h (struct handler): var and chosen_clause are now volatile.
(struct catchtag): val, next, and pdlcount are now volatile.
src/ChangeLog
src/lisp.h