X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/36a50f38fbbcf5cc0cafc44af9d1bfcd6c13fc25..f974317897441f638808cbcfecb2c8fd1c0281ec:/src/lread.c diff --git a/src/lread.c b/src/lread.c index ae175296dd..fa9a63e63a 100644 --- a/src/lread.c +++ b/src/lread.c @@ -3280,7 +3280,7 @@ substitute_object_recurse (Lisp_Object object, Lisp_Object placeholder, Lisp_Obj { case Lisp_Vectorlike: { - ptrdiff_t i, length = 0; + ptrdiff_t i = 0, length = 0; if (BOOL_VECTOR_P (subtree)) return subtree; /* No sub-objects anyway. */ else if (CHAR_TABLE_P (subtree) || SUB_CHAR_TABLE_P (subtree) @@ -3295,7 +3295,9 @@ substitute_object_recurse (Lisp_Object object, Lisp_Object placeholder, Lisp_Obj behavior. */ wrong_type_argument (Qsequencep, subtree); - for (i = 0; i < length; i++) + if (SUB_CHAR_TABLE_P (subtree)) + i = 2; + for ( ; i < length; i++) SUBSTITUTE (AREF (subtree, i), ASET (subtree, i, true_value)); return subtree; @@ -3776,8 +3778,11 @@ intern_1 (const char *str, ptrdiff_t len) Lisp_Object obarray = check_obarray (Vobarray); Lisp_Object tem = oblookup (obarray, str, len, len); - return SYMBOLP (tem) ? tem : intern_driver (make_string (str, len), - obarray, tem); + return (SYMBOLP (tem) ? tem + /* The above `oblookup' was done on the basis of nchars==nbytes, so + the string has to be unibyte. */ + : intern_driver (make_unibyte_string (str, len), + obarray, tem)); } Lisp_Object