summaryrefslogtreecommitdiff
path: root/src/alloc.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2015-01-19 16:49:11 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2015-01-19 17:17:30 -0800
commit347e01447194e511daaeee8835bcb86d2505e642 (patch)
treea075b2c51308d56221833b5e7d9e8e48e18e472d /src/alloc.c
parentfb6462f056f616f3da8ae18037c7c2137fecb6fd (diff)
downloademacs-347e01447194e511daaeee8835bcb86d2505e642.tar.gz
Port to hypothetical case where Qnil is nonzero
* alloc.c (allocate_pseudovector): * callint.c (Fcall_interactively): * coding.c (syms_of_coding): * dispnew.c (realloc_glyph_pool): * fringe.c (init_fringe): * lisp.h (memsetnil): * xdisp.c (init_iterator): Port to the currently-hypothetical case where Qnil is nonzero. * dispnew.c (adjust_glyph_matrix): Remove unnecessary verification, as there are no Lisp_Object values in the data here. * lisp.h (NIL_IS_NONZERO): New symbol, replacing NIL_IS_ZERO. All uses changed. Define only if not already defined, so that one can debug with -DNIL_IS_NONZERO. * xdisp.c (init_iterator): Remove unnecessary initializations to 0.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 2c7b02f1158..d758ca18a7b 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3175,9 +3175,10 @@ allocate_pseudovector (int memlen, int lisplen,
eassert (lisplen <= (1 << PSEUDOVECTOR_SIZE_BITS) - 1);
/* Only the first LISPLEN slots will be traced normally by the GC.
- But since Qnil == 0, we can memset Lisp_Object slots as well. */
- verify (NIL_IS_ZERO);
- memset (v->contents, 0, zerolen * word_size);
+ If Qnil is nonzero, clear the non-Lisp data separately. */
+ memsetnil (v->contents, zerolen);
+ if (NIL_IS_NONZERO)
+ memset (v->contents + lisplen, 0, (zerolen - lisplen) * word_size);
XSETPVECTYPESIZE (v, tag, lisplen, memlen - lisplen);
return v;