From: Paul Eggert Date: Tue, 31 May 2022 08:19:32 +0000 (-0700) Subject: Simplify CHAR_TABLE_REF_ASCII X-Git-Tag: emacs-29.0.90~1910^2~319^2~7 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=30966a6e67ff5b599a2906b9e336ab5744786f06;p=emacs.git Simplify CHAR_TABLE_REF_ASCII * src/lisp.h (CHAR_TABLE_REF_ASCII): Refactor as a straightforward for-loop. Redo an if-then-else to be an (!if)-else-then as this is a bit cleaner, and it also works around GCC bug 105755. --- diff --git a/src/lisp.h b/src/lisp.h index 3578ca57b46..ff6f0aaf54d 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -2091,19 +2091,17 @@ XSUB_CHAR_TABLE (Lisp_Object a) INLINE Lisp_Object CHAR_TABLE_REF_ASCII (Lisp_Object ct, ptrdiff_t idx) { - struct Lisp_Char_Table *tbl = NULL; - Lisp_Object val; - do + for (struct Lisp_Char_Table *tbl = XCHAR_TABLE (ct); ; + tbl = XCHAR_TABLE (tbl->parent)) { - tbl = tbl ? XCHAR_TABLE (tbl->parent) : XCHAR_TABLE (ct); - val = (! SUB_CHAR_TABLE_P (tbl->ascii) ? tbl->ascii - : XSUB_CHAR_TABLE (tbl->ascii)->contents[idx]); + Lisp_Object val = (SUB_CHAR_TABLE_P (tbl->ascii) + ? XSUB_CHAR_TABLE (tbl->ascii)->contents[idx] + : tbl->ascii); if (NILP (val)) val = tbl->defalt; + if (!NILP (val) || NILP (tbl->parent)) + return val; } - while (NILP (val) && ! NILP (tbl->parent)); - - return val; } /* Almost equivalent to Faref (CT, IDX) with optimization for ASCII