1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

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.
This commit is contained in:
Paul Eggert 2022-05-31 01:19:32 -07:00
parent 82c05c034e
commit 30966a6e67

View file

@ -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