diff options
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/alloc.c b/src/alloc.c index 82be8a903b4..8be6371d247 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -1643,10 +1643,18 @@ static char const string_overrun_cookie[GC_STRING_OVERRUN_COOKIE_SIZE] = | |||
| 1643 | 1643 | ||
| 1644 | #else /* not GC_CHECK_STRING_BYTES */ | 1644 | #else /* not GC_CHECK_STRING_BYTES */ |
| 1645 | 1645 | ||
| 1646 | #define SDATA_SIZE(NBYTES) \ | 1646 | /* The 'max' reserves space for the nbytes union member even when NBYTES + 1 is |
| 1647 | ((SDATA_DATA_OFFSET \ | 1647 | less than the size of that member. The 'max' is not needed when |
| 1648 | + max (NBYTES, sizeof (EMACS_INT) - 1) + 1 \ | 1648 | SDATA_DATA_OFFSET is a multiple of sizeof (EMACS_INT), because then the |
| 1649 | + sizeof (EMACS_INT) - 1) \ | 1649 | alignment code reserves enough space. */ |
| 1650 | |||
| 1651 | #define SDATA_SIZE(NBYTES) \ | ||
| 1652 | ((SDATA_DATA_OFFSET \ | ||
| 1653 | + (SDATA_DATA_OFFSET % sizeof (EMACS_INT) == 0 \ | ||
| 1654 | ? NBYTES \ | ||
| 1655 | : max (NBYTES, sizeof (EMACS_INT) - 1)) \ | ||
| 1656 | + 1 \ | ||
| 1657 | + sizeof (EMACS_INT) - 1) \ | ||
| 1650 | & ~(sizeof (EMACS_INT) - 1)) | 1658 | & ~(sizeof (EMACS_INT) - 1)) |
| 1651 | 1659 | ||
| 1652 | #endif /* not GC_CHECK_STRING_BYTES */ | 1660 | #endif /* not GC_CHECK_STRING_BYTES */ |