Avoid assertion violations in 'bidi_resolve_brackets'

* src/bidi.c (bidi_resolve_brackets): Move assertion to where it
really matters.  (Bug#54295)
This commit is contained in:
Eli Zaretskii 2022-03-08 15:35:39 +02:00
parent 80736aef90
commit d184773c2e

View file

@ -2921,13 +2921,13 @@ bidi_resolve_brackets (struct bidi_it *bidi_it)
int embedding_level = bidi_it->level_stack[bidi_it->stack_idx].level; int embedding_level = bidi_it->level_stack[bidi_it->stack_idx].level;
bidi_type_t embedding_type = (embedding_level & 1) ? STRONG_R : STRONG_L; bidi_type_t embedding_type = (embedding_level & 1) ? STRONG_R : STRONG_L;
eassert (bidi_it->prev_for_neutral.type != UNKNOWN_BT);
eassert (bidi_it->bracket_pairing_pos > bidi_it->charpos); eassert (bidi_it->bracket_pairing_pos > bidi_it->charpos);
if (bidi_it->bracket_enclosed_type == embedding_type) /* N0b */ if (bidi_it->bracket_enclosed_type == embedding_type) /* N0b */
type = embedding_type; type = embedding_type;
else if (bidi_it->bracket_enclosed_type == STRONG_L /* N0c, N0d */ else if (bidi_it->bracket_enclosed_type == STRONG_L /* N0c, N0d */
|| bidi_it->bracket_enclosed_type == STRONG_R) || bidi_it->bracket_enclosed_type == STRONG_R)
{ {
eassert (bidi_it->prev_for_neutral.type != UNKNOWN_BT);
switch (bidi_it->prev_for_neutral.type) switch (bidi_it->prev_for_neutral.type)
{ {
case STRONG_R: case STRONG_R:
@ -2946,7 +2946,6 @@ bidi_resolve_brackets (struct bidi_it *bidi_it)
break; break;
default: default:
/* N0d: Do not set the type for that bracket pair. */ /* N0d: Do not set the type for that bracket pair. */
/* (Actuallly, this shouldn't happen.) */
break; break;
} }
} }