mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-01-04 22:20:28 -05:00
ITS#6437: Fix alignment after slap_sl_realloc().
Also use -Align instead of ~pad: Valid also for non-twos complement.
This commit is contained in:
parent
4c36193a5c
commit
5b164ba74c
1 changed files with 4 additions and 7 deletions
|
|
@ -129,8 +129,7 @@ slap_sl_mem_create(
|
|||
return sh;
|
||||
|
||||
/* round up to doubleword boundary */
|
||||
size += pad;
|
||||
size &= ~pad;
|
||||
size = (size + Align-1) & -Align;
|
||||
|
||||
if (!sh) {
|
||||
sh = ch_malloc(sizeof(struct slab_heap));
|
||||
|
|
@ -243,8 +242,7 @@ slap_sl_malloc(
|
|||
}
|
||||
|
||||
/* round up to doubleword boundary, plus space for len at head and tail */
|
||||
size += 2*sizeof(ber_len_t) + pad;
|
||||
size &= ~pad;
|
||||
size = (size + 2*sizeof(ber_len_t) + Align-1) & -Align;
|
||||
|
||||
if (sh->sh_stack) {
|
||||
if ((char *)sh->sh_last + size >= (char *)sh->sh_end) {
|
||||
|
|
@ -370,9 +368,8 @@ slap_sl_realloc(void *ptr, ber_len_t size, void *ctx)
|
|||
}
|
||||
|
||||
if (sh->sh_stack) {
|
||||
/* round up to doubleword boundary */
|
||||
size += pad + sizeof( ber_len_t );
|
||||
size &= ~pad;
|
||||
/* Round up to doubleword boundary, add room for head */
|
||||
size = ((size + Align-1) & -Align) + sizeof( ber_len_t );
|
||||
|
||||
p--;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue