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