aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog2
-rw-r--r--src/fns.c18
2 files changed, 10 insertions, 10 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 80626bc0c2a..c47a6402e81 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,7 @@
12011-06-18 Paul Eggert <eggert@cs.ucla.edu> 12011-06-18 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 * fns.c (Ffillarray): Don't assume bool vector size fits in 'int'.
4
3 * alloc.c (Fmake_bool_vector): Avoid unnecessary multiplication. 5 * alloc.c (Fmake_bool_vector): Avoid unnecessary multiplication.
4 6
5 * fns.c (concat): Catch string overflow earlier. 7 * fns.c (concat): Catch string overflow earlier.
diff --git a/src/fns.c b/src/fns.c
index 4c1505ab0f1..7b303ff3836 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -2188,19 +2188,17 @@ ARRAY is a vector, string, char-table, or bool-vector. */)
2188 else if (BOOL_VECTOR_P (array)) 2188 else if (BOOL_VECTOR_P (array))
2189 { 2189 {
2190 register unsigned char *p = XBOOL_VECTOR (array)->data; 2190 register unsigned char *p = XBOOL_VECTOR (array)->data;
2191 int size_in_chars 2191 EMACS_INT size = XBOOL_VECTOR (array)->size;
2192 = ((XBOOL_VECTOR (array)->size + BOOL_VECTOR_BITS_PER_CHAR - 1) 2192 EMACS_INT size_in_chars
2193 = ((size + BOOL_VECTOR_BITS_PER_CHAR - 1)
2193 / BOOL_VECTOR_BITS_PER_CHAR); 2194 / BOOL_VECTOR_BITS_PER_CHAR);
2194 2195
2195 charval = (! NILP (item) ? -1 : 0); 2196 if (size_in_chars)
2196 for (idx = 0; idx < size_in_chars - 1; idx++)
2197 p[idx] = charval;
2198 if (idx < size_in_chars)
2199 { 2197 {
2200 /* Mask out bits beyond the vector size. */ 2198 memset (p, ! NILP (item) ? -1 : 0, size_in_chars);
2201 if (XBOOL_VECTOR (array)->size % BOOL_VECTOR_BITS_PER_CHAR) 2199
2202 charval &= (1 << (XBOOL_VECTOR (array)->size % BOOL_VECTOR_BITS_PER_CHAR)) - 1; 2200 /* Clear any extraneous bits in the last byte. */
2203 p[idx] = charval; 2201 p[size_in_chars - 1] &= (1 << (size % BOOL_VECTOR_BITS_PER_CHAR)) - 1;
2204 } 2202 }
2205 } 2203 }
2206 else 2204 else