From b643996157ced5daf45752d37ac5bee3a4f4389f Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 8 Jun 2011 10:54:58 -0700 Subject: [PATCH] * alloc.c (mark_vectorlike, mark_char_table, mark_object): Avoid EMACS_UINT when a (possibly-narrower) signed value would do just as well. We prefer using signed arithmetic, to avoid comparison confusion. --- src/ChangeLog | 3 +++ src/alloc.c | 13 ++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index e2b1b294968..c747a325139 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -2,6 +2,9 @@ * alloc.c (Fmake_bool_vector): Don't assume vector size fits in int. (allocate_vectorlike): Check for ptrdiff_t overflow. + (mark_vectorlike, mark_char_table, mark_object): Avoid EMACS_UINT + when a (possibly-narrower) signed value would do just as well. + We prefer using signed arithmetic, to avoid comparison confusion. * alloc.c: Catch some string size overflows that we were missing. (XMALLOC_OVERRUN_CHECK_SIZE) [!XMALLOC_OVERRUN_CHECK]: Define to 0, diff --git a/src/alloc.c b/src/alloc.c index 2dbaef9b00b..1307ad60234 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -5265,8 +5265,8 @@ static size_t mark_object_loop_halt; static void mark_vectorlike (struct Lisp_Vector *ptr) { - register EMACS_UINT size = ptr->header.size; - register EMACS_UINT i; + EMACS_INT size = ptr->header.size; + EMACS_INT i; eassert (!VECTOR_MARKED_P (ptr)); VECTOR_MARK (ptr); /* Else mark it */ @@ -5288,8 +5288,8 @@ mark_vectorlike (struct Lisp_Vector *ptr) static void mark_char_table (struct Lisp_Vector *ptr) { - register EMACS_UINT size = ptr->header.size & PSEUDOVECTOR_SIZE_MASK; - register EMACS_UINT i; + int size = ptr->header.size & PSEUDOVECTOR_SIZE_MASK; + int i; eassert (!VECTOR_MARKED_P (ptr)); VECTOR_MARK (ptr); @@ -5417,12 +5417,11 @@ mark_object (Lisp_Object arg) recursion there. */ { register struct Lisp_Vector *ptr = XVECTOR (obj); - register EMACS_UINT size = ptr->header.size; - register EMACS_UINT i; + int size = ptr->header.size & PSEUDOVECTOR_SIZE_MASK; + int i; CHECK_LIVE (live_vector_p); VECTOR_MARK (ptr); /* Else mark it */ - size &= PSEUDOVECTOR_SIZE_MASK; for (i = 0; i < size; i++) /* and then mark its elements */ { if (i != COMPILED_CONSTANTS) -- 2.39.5