From e814a15920cf817330a9336e5987df57c12d8e91 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Fri, 30 May 1997 05:11:26 +0000 Subject: [PATCH] (Fchar_table_range, Fset_char_table_range): Make one-element vector work for RANGE. --- src/fns.c | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/fns.c b/src/fns.c index b912071a5f8..69bcb6f7d86 100644 --- a/src/fns.c +++ b/src/fns.c @@ -1315,12 +1315,17 @@ or a character code.") return Faref (char_table, range); else if (VECTORP (range)) { - int size = XVECTOR (range)->size; - Lisp_Object *val = XVECTOR (range)->contents; - Lisp_Object ch = Fmake_char_internal (size <= 0 ? Qnil : val[0], - size <= 1 ? Qnil : val[1], - size <= 2 ? Qnil : val[2]); - return Faref (char_table, ch); + if (XVECTOR (range)->size == 1) + return Faref (char_table, XVECTOR (range)->contents[0]); + else + { + int size = XVECTOR (range)->size; + Lisp_Object *val = XVECTOR (range)->contents; + Lisp_Object ch = Fmake_char_internal (size <= 0 ? Qnil : val[0], + size <= 1 ? Qnil : val[1], + size <= 2 ? Qnil : val[2]); + return Faref (char_table, ch); + } } else error ("Invalid RANGE argument to `char-table-range'"); @@ -1348,12 +1353,17 @@ or a character code.") Faset (char_table, range, value); else if (VECTORP (range)) { - int size = XVECTOR (range)->size; - Lisp_Object *val = XVECTOR (range)->contents; - Lisp_Object ch = Fmake_char_internal (size <= 0 ? Qnil : val[0], - size <= 1 ? Qnil : val[1], - size <= 2 ? Qnil : val[2]); - return Faset (char_table, ch, value); + if (XVECTOR (range)->size == 1) + return Faset (char_table, XVECTOR (range)->contents[0], value); + else + { + int size = XVECTOR (range)->size; + Lisp_Object *val = XVECTOR (range)->contents; + Lisp_Object ch = Fmake_char_internal (size <= 0 ? Qnil : val[0], + size <= 1 ? Qnil : val[1], + size <= 2 ? Qnil : val[2]); + return Faset (char_table, ch, value); + } } else error ("Invalid RANGE argument to `set-char-table-range'"); -- 2.39.5