diff options
| author | Paul Eggert | 2019-04-08 12:59:22 -0700 |
|---|---|---|
| committer | Paul Eggert | 2019-04-08 13:01:21 -0700 |
| commit | a038df77de7b1aa2d73a6478493b8838b59e4982 (patch) | |
| tree | fbaa0087bab52a815dfd249d189301e53de0d345 /src/bignum.c | |
| parent | 31e9087cdcd0b78b2247c3d8532290881abfbb08 (diff) | |
| download | emacs-a038df77de7b1aa2d73a6478493b8838b59e4982.tar.gz emacs-a038df77de7b1aa2d73a6478493b8838b59e4982.zip | |
Allow gap before first non-Lisp pseudovec member
Problem reported by Keith David Bershatsky in:
https://lists.gnu.org/r/emacs-devel/2019-04/msg00259.html
Solution suggested by Stefan Monnier in:
https://lists.gnu.org/r/emacs-devel/2019-04/msg00282.html
* src/buffer.h (BUFFER_LISP_SIZE): Simplify by using PSEUDOVECSIZE.
(BUFFER_REST_SIZE): Simplify by using VECSIZE and BUFFER_LISP_SIZE.
* src/lisp.h (PSEUDOVECSIZE): Base it on the last Lisp field,
not the first non-Lisp field. All callers changed. Callers
without Lisp fields changed to use ALLOCATE_PLAIN_PSEUDOVECTOR.
(ALLOCATE_PLAIN_PSEUDOVECTOR): New macro.
Diffstat (limited to 'src/bignum.c')
| -rw-r--r-- | src/bignum.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/bignum.c b/src/bignum.c index 4118601e108..009d73118c2 100644 --- a/src/bignum.c +++ b/src/bignum.c | |||
| @@ -86,8 +86,8 @@ make_bignum_bits (size_t bits) | |||
| 86 | if (integer_width < bits) | 86 | if (integer_width < bits) |
| 87 | overflow_error (); | 87 | overflow_error (); |
| 88 | 88 | ||
| 89 | struct Lisp_Bignum *b = ALLOCATE_PSEUDOVECTOR (struct Lisp_Bignum, value, | 89 | struct Lisp_Bignum *b = ALLOCATE_PLAIN_PSEUDOVECTOR (struct Lisp_Bignum, |
| 90 | PVEC_BIGNUM); | 90 | PVEC_BIGNUM); |
| 91 | mpz_init (b->value); | 91 | mpz_init (b->value); |
| 92 | mpz_swap (b->value, mpz[0]); | 92 | mpz_swap (b->value, mpz[0]); |
| 93 | return make_lisp_ptr (b, Lisp_Vectorlike); | 93 | return make_lisp_ptr (b, Lisp_Vectorlike); |
| @@ -342,8 +342,8 @@ bignum_to_string (Lisp_Object num, int base) | |||
| 342 | Lisp_Object | 342 | Lisp_Object |
| 343 | make_bignum_str (char const *num, int base) | 343 | make_bignum_str (char const *num, int base) |
| 344 | { | 344 | { |
| 345 | struct Lisp_Bignum *b = ALLOCATE_PSEUDOVECTOR (struct Lisp_Bignum, value, | 345 | struct Lisp_Bignum *b = ALLOCATE_PLAIN_PSEUDOVECTOR (struct Lisp_Bignum, |
| 346 | PVEC_BIGNUM); | 346 | PVEC_BIGNUM); |
| 347 | mpz_init (b->value); | 347 | mpz_init (b->value); |
| 348 | int check = mpz_set_str (b->value, num, base); | 348 | int check = mpz_set_str (b->value, num, base); |
| 349 | eassert (check == 0); | 349 | eassert (check == 0); |