From: Paul Eggert Date: Tue, 4 Feb 2025 19:43:58 +0000 (-0800) Subject: Improve bidi_get_time runtime checking X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0b3ce5f940cb1b0e373aae05cbb19610db9dd875;p=emacs.git Improve bidi_get_time runtime checking * src/bidi.c (bidi_get_type): Improve runtime checking, by also aborting if the bidi_type_table entry is not a bidi_type_t value. (cherry picked from commit 782ec71053d8535511522f27f28c11682ca0f40b) --- diff --git a/src/bidi.c b/src/bidi.c index d8754e2db73..fd0bebb85e0 100644 --- a/src/bidi.c +++ b/src/bidi.c @@ -282,12 +282,6 @@ bidi_get_type (int ch, bidi_dir_t override) emacs_abort (); default_type = (bidi_type_t) XFIXNUM (CHAR_TABLE_REF (bidi_type_table, ch)); - /* Every valid character code, even those that are unassigned by the - UCD, have some bidi-class property, according to - DerivedBidiClass.txt file. Therefore, if we ever get UNKNOWN_BT - (= zero) code from CHAR_TABLE_REF, that's a bug. */ - if (default_type == UNKNOWN_BT) - emacs_abort (); switch (default_type) { @@ -303,13 +297,26 @@ bidi_get_type (int ch, bidi_dir_t override) case FSI: case PDI: return default_type; - default: + + case STRONG_L: case STRONG_R: + case WEAK_EN: case WEAK_AN: + case STRONG_AL: + case WEAK_ES: case WEAK_ET: case WEAK_CS: case WEAK_NSM: + case NEUTRAL_S: case NEUTRAL_WS: case NEUTRAL_ON: if (override == L2R) return STRONG_L; else if (override == R2L) return STRONG_R; else return default_type; + + case UNKNOWN_BT: + default: + /* Every valid character code, even those unassigned by the UCD, + have some bidi-class property, according to DerivedBidiClass.txt. + Therefore, if we ever get UNKNOWN_BT (= zero) or some unknown + code from CHAR_TABLE_REF, that's a bug. */ + emacs_abort (); } }