Mercurial > emacs
comparison src/alloc.c @ 55159:e4e9ec547c6f
(Fmake_bool_vector): Use BOOL_VECTOR_BITS_PER_CHAR instead of
BITS_PER_CHAR for bool vectors.
| author | Andreas Schwab <schwab@suse.de> |
|---|---|
| date | Mon, 26 Apr 2004 21:42:49 +0000 |
| parents | db8cbe59ee5c |
| children | d3542bbadad7 1a68e4b22355 |
comparison
equal
deleted
inserted
replaced
| 55158:e69f42e233dc | 55159:e4e9ec547c6f |
|---|---|
| 1947 int real_init, i; | 1947 int real_init, i; |
| 1948 int length_in_chars, length_in_elts, bits_per_value; | 1948 int length_in_chars, length_in_elts, bits_per_value; |
| 1949 | 1949 |
| 1950 CHECK_NATNUM (length); | 1950 CHECK_NATNUM (length); |
| 1951 | 1951 |
| 1952 bits_per_value = sizeof (EMACS_INT) * BITS_PER_CHAR; | 1952 bits_per_value = sizeof (EMACS_INT) * BOOL_VECTOR_BITS_PER_CHAR; |
| 1953 | 1953 |
| 1954 length_in_elts = (XFASTINT (length) + bits_per_value - 1) / bits_per_value; | 1954 length_in_elts = (XFASTINT (length) + bits_per_value - 1) / bits_per_value; |
| 1955 length_in_chars = ((XFASTINT (length) + BITS_PER_CHAR - 1) / BITS_PER_CHAR); | 1955 length_in_chars = ((XFASTINT (length) + BOOL_VECTOR_BITS_PER_CHAR - 1) |
| 1956 / BOOL_VECTOR_BITS_PER_CHAR); | |
| 1956 | 1957 |
| 1957 /* We must allocate one more elements than LENGTH_IN_ELTS for the | 1958 /* We must allocate one more elements than LENGTH_IN_ELTS for the |
| 1958 slot `size' of the struct Lisp_Bool_Vector. */ | 1959 slot `size' of the struct Lisp_Bool_Vector. */ |
| 1959 val = Fmake_vector (make_number (length_in_elts + 1), Qnil); | 1960 val = Fmake_vector (make_number (length_in_elts + 1), Qnil); |
| 1960 p = XBOOL_VECTOR (val); | 1961 p = XBOOL_VECTOR (val); |
| 1967 real_init = (NILP (init) ? 0 : -1); | 1968 real_init = (NILP (init) ? 0 : -1); |
| 1968 for (i = 0; i < length_in_chars ; i++) | 1969 for (i = 0; i < length_in_chars ; i++) |
| 1969 p->data[i] = real_init; | 1970 p->data[i] = real_init; |
| 1970 | 1971 |
| 1971 /* Clear the extraneous bits in the last byte. */ | 1972 /* Clear the extraneous bits in the last byte. */ |
| 1972 if (XINT (length) != length_in_chars * BITS_PER_CHAR) | 1973 if (XINT (length) != length_in_chars * BOOL_VECTOR_BITS_PER_CHAR) |
| 1973 XBOOL_VECTOR (val)->data[length_in_chars - 1] | 1974 XBOOL_VECTOR (val)->data[length_in_chars - 1] |
| 1974 &= (1 << (XINT (length) % BITS_PER_CHAR)) - 1; | 1975 &= (1 << (XINT (length) % BOOL_VECTOR_BITS_PER_CHAR)) - 1; |
| 1975 | 1976 |
| 1976 return val; | 1977 return val; |
| 1977 } | 1978 } |
| 1978 | 1979 |
| 1979 | 1980 |
