diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 2 | ||||
| -rw-r--r-- | src/fns.c | 18 |
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 @@ | |||
| 1 | 2011-06-18 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2011-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. |
| @@ -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 |