aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Schwab2004-04-26 21:44:22 +0000
committerAndreas Schwab2004-04-26 21:44:22 +0000
commitdb85986c76f0b1c4c34ff86b6305004c3c0f1ec4 (patch)
tree0d3fc13f247eb6e3c9a7327a78c8d8fdbf198f59 /src
parentb9ed21775591cf1d901f8e501c5f1dc86e840c7f (diff)
downloademacs-db85986c76f0b1c4c34ff86b6305004c3c0f1ec4.tar.gz
emacs-db85986c76f0b1c4c34ff86b6305004c3c0f1ec4.zip
(Fcopy_sequence, concat, internal_equal, Ffillarray, mapcar1): Use
BOOL_VECTOR_BITS_PER_CHAR instead of BITS_PER_CHAR for bool vectors.
Diffstat (limited to 'src')
-rw-r--r--src/fns.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/fns.c b/src/fns.c
index bb215317864..1dbb9fb7c33 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -1,5 +1,5 @@
1/* Random utility Lisp functions. 1/* Random utility Lisp functions.
2 Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 98, 99, 2000, 2001, 02, 2003 2 Copyright (C) 1985, 86, 87, 93, 94, 95, 97, 98, 99, 2000, 2001, 02, 03, 2004
3 Free Software Foundation, Inc. 3 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
@@ -513,7 +513,8 @@ with the original. */)
513 { 513 {
514 Lisp_Object val; 514 Lisp_Object val;
515 int size_in_chars 515 int size_in_chars
516 = (XBOOL_VECTOR (arg)->size + BITS_PER_CHAR - 1) / BITS_PER_CHAR; 516 = ((XBOOL_VECTOR (arg)->size + BOOL_VECTOR_BITS_PER_CHAR - 1)
517 / BOOL_VECTOR_BITS_PER_CHAR);
517 518
518 val = Fmake_bool_vector (Flength (arg), Qnil); 519 val = Fmake_bool_vector (Flength (arg), Qnil);
519 bcopy (XBOOL_VECTOR (arg)->data, XBOOL_VECTOR (val)->data, 520 bcopy (XBOOL_VECTOR (arg)->data, XBOOL_VECTOR (val)->data,
@@ -783,8 +784,8 @@ concat (nargs, args, target_type, last_special)
783 else if (BOOL_VECTOR_P (this)) 784 else if (BOOL_VECTOR_P (this))
784 { 785 {
785 int byte; 786 int byte;
786 byte = XBOOL_VECTOR (this)->data[thisindex / BITS_PER_CHAR]; 787 byte = XBOOL_VECTOR (this)->data[thisindex / BOOL_VECTOR_BITS_PER_CHAR];
787 if (byte & (1 << (thisindex % BITS_PER_CHAR))) 788 if (byte & (1 << (thisindex % BOOL_VECTOR_BITS_PER_CHAR)))
788 elt = Qt; 789 elt = Qt;
789 else 790 else
790 elt = Qnil; 791 elt = Qnil;
@@ -2245,7 +2246,8 @@ internal_equal (o1, o2, depth, props)
2245 if (BOOL_VECTOR_P (o1)) 2246 if (BOOL_VECTOR_P (o1))
2246 { 2247 {
2247 int size_in_chars 2248 int size_in_chars
2248 = (XBOOL_VECTOR (o1)->size + BITS_PER_CHAR - 1) / BITS_PER_CHAR; 2249 = ((XBOOL_VECTOR (o1)->size + BOOL_VECTOR_BITS_PER_CHAR - 1)
2250 / BOOL_VECTOR_BITS_PER_CHAR);
2249 2251
2250 if (XBOOL_VECTOR (o1)->size != XBOOL_VECTOR (o2)->size) 2252 if (XBOOL_VECTOR (o1)->size != XBOOL_VECTOR (o2)->size)
2251 return 0; 2253 return 0;
@@ -2356,7 +2358,8 @@ ARRAY is a vector, string, char-table, or bool-vector. */)
2356 { 2358 {
2357 register unsigned char *p = XBOOL_VECTOR (array)->data; 2359 register unsigned char *p = XBOOL_VECTOR (array)->data;
2358 int size_in_chars 2360 int size_in_chars
2359 = (XBOOL_VECTOR (array)->size + BITS_PER_CHAR - 1) / BITS_PER_CHAR; 2361 = ((XBOOL_VECTOR (array)->size + BOOL_VECTOR_BITS_PER_CHAR - 1)
2362 / BOOL_VECTOR_BITS_PER_CHAR);
2360 2363
2361 charval = (! NILP (item) ? -1 : 0); 2364 charval = (! NILP (item) ? -1 : 0);
2362 for (index = 0; index < size_in_chars - 1; index++) 2365 for (index = 0; index < size_in_chars - 1; index++)
@@ -2364,8 +2367,8 @@ ARRAY is a vector, string, char-table, or bool-vector. */)
2364 if (index < size_in_chars) 2367 if (index < size_in_chars)
2365 { 2368 {
2366 /* Mask out bits beyond the vector size. */ 2369 /* Mask out bits beyond the vector size. */
2367 if (XBOOL_VECTOR (array)->size % BITS_PER_CHAR) 2370 if (XBOOL_VECTOR (array)->size % BOOL_VECTOR_BITS_PER_CHAR)
2368 charval &= (1 << (XBOOL_VECTOR (array)->size % BITS_PER_CHAR)) - 1; 2371 charval &= (1 << (XBOOL_VECTOR (array)->size % BOOL_VECTOR_BITS_PER_CHAR)) - 1;
2369 p[index] = charval; 2372 p[index] = charval;
2370 } 2373 }
2371 } 2374 }
@@ -2958,8 +2961,8 @@ mapcar1 (leni, vals, fn, seq)
2958 for (i = 0; i < leni; i++) 2961 for (i = 0; i < leni; i++)
2959 { 2962 {
2960 int byte; 2963 int byte;
2961 byte = XBOOL_VECTOR (seq)->data[i / BITS_PER_CHAR]; 2964 byte = XBOOL_VECTOR (seq)->data[i / BOOL_VECTOR_BITS_PER_CHAR];
2962 if (byte & (1 << (i % BITS_PER_CHAR))) 2965 if (byte & (1 << (i % BOOL_VECTOR_BITS_PER_CHAR)))
2963 dummy = Qt; 2966 dummy = Qt;
2964 else 2967 else
2965 dummy = Qnil; 2968 dummy = Qnil;