(read1): Use BOOL_VECTOR_BITS_PER_CHAR instead of BITS_PER_CHAR for
bool vectors.
This commit is contained in:
11
src/lread.c
11
src/lread.c
@@ -1993,8 +1993,9 @@ read1 (readcharfun, pch, first_in_list)
|
||||
if (c == '"')
|
||||
{
|
||||
Lisp_Object tmp, val;
|
||||
int size_in_chars = ((XFASTINT (length) + BITS_PER_CHAR - 1)
|
||||
/ BITS_PER_CHAR);
|
||||
int size_in_chars
|
||||
= ((XFASTINT (length) + BOOL_VECTOR_BITS_PER_CHAR - 1)
|
||||
/ BOOL_VECTOR_BITS_PER_CHAR);
|
||||
|
||||
UNREAD (c);
|
||||
tmp = read1 (readcharfun, pch, first_in_list);
|
||||
@@ -2003,7 +2004,7 @@ read1 (readcharfun, pch, first_in_list)
|
||||
when the number of bits was a multiple of 8.
|
||||
Accept such input in case it came from an old version. */
|
||||
&& ! (XFASTINT (length)
|
||||
== (SCHARS (tmp) - 1) * BITS_PER_CHAR))
|
||||
== (SCHARS (tmp) - 1) * BOOL_VECTOR_BITS_PER_CHAR))
|
||||
Fsignal (Qinvalid_read_syntax,
|
||||
Fcons (make_string ("#&...", 5), Qnil));
|
||||
|
||||
@@ -2011,9 +2012,9 @@ read1 (readcharfun, pch, first_in_list)
|
||||
bcopy (SDATA (tmp), XBOOL_VECTOR (val)->data,
|
||||
size_in_chars);
|
||||
/* Clear the extraneous bits in the last byte. */
|
||||
if (XINT (length) != size_in_chars * BITS_PER_CHAR)
|
||||
if (XINT (length) != size_in_chars * BOOL_VECTOR_BITS_PER_CHAR)
|
||||
XBOOL_VECTOR (val)->data[size_in_chars - 1]
|
||||
&= (1 << (XINT (length) % BITS_PER_CHAR)) - 1;
|
||||
&= (1 << (XINT (length) % BOOL_VECTOR_BITS_PER_CHAR)) - 1;
|
||||
return val;
|
||||
}
|
||||
Fsignal (Qinvalid_read_syntax, Fcons (make_string ("#&...", 5),
|
||||
|
||||
Reference in New Issue
Block a user