; Circumvent miscompilations on Sun C 5.12 (148917-07)

* src/minibuf.c (Ftry_completion, Fall_completions): Transform
ternary expressions after open-ended if statements into proper
if/else statements.
This commit is contained in:
Po Lu 2024-03-16 09:50:58 +08:00
parent bbbf1e6f2d
commit 6461854f47

View file

@ -1701,11 +1701,12 @@ or from one of the possible completions. */)
tem = Fcommandp (elt, Qnil);
else
{
tem = (type == hash_table
? call2 (predicate, elt,
HASH_VALUE (XHASH_TABLE (collection),
idx - 1))
: call1 (predicate, elt));
if (type == hash_table)
tem = call2 (predicate, elt,
HASH_VALUE (XHASH_TABLE (collection),
idx - 1));
else
tem = call1 (predicate, elt);
}
if (NILP (tem)) continue;
}
@ -1845,9 +1846,12 @@ with a space are ignored unless STRING itself starts with a space. */)
Lisp_Object allmatches;
if (VECTORP (collection))
collection = check_obarray (collection);
int type = HASH_TABLE_P (collection) ? 3
: OBARRAYP (collection) ? 2
: NILP (collection) || (CONSP (collection) && !FUNCTIONP (collection));
int type = (HASH_TABLE_P (collection)
? 3 : (OBARRAYP (collection)
? 2 : ((NILP (collection)
|| (CONSP (collection)
&& !FUNCTIONP (collection)))
? 1 : 0)));
ptrdiff_t idx = 0;
Lisp_Object bucket, tem, zero;
@ -1931,10 +1935,12 @@ with a space are ignored unless STRING itself starts with a space. */)
tem = Fcommandp (elt, Qnil);
else
{
tem = type == 3
? call2 (predicate, elt,
HASH_VALUE (XHASH_TABLE (collection), idx - 1))
: call1 (predicate, elt);
if (type == 3)
tem = call2 (predicate, elt,
HASH_VALUE (XHASH_TABLE (collection),
idx - 1));
else
tem = call1 (predicate, elt);
}
if (NILP (tem)) continue;
}