aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_alloc_util.c
diff options
context:
space:
mode:
authorJohn Högberg <[email protected]>2018-07-06 09:49:18 +0200
committerJohn Högberg <[email protected]>2018-07-09 09:55:14 +0200
commit0af0335f34178992c588d5d3824b5fb838338624 (patch)
treed1db3259fe0c337e1d5a4d559471189b892b56d4 /erts/emulator/beam/erl_alloc_util.c
parent6cfa8af60a9c6fe9043e4992434d40d4a34019e3 (diff)
downloadotp-0af0335f34178992c588d5d3824b5fb838338624.tar.gz
otp-0af0335f34178992c588d5d3824b5fb838338624.tar.bz2
otp-0af0335f34178992c588d5d3824b5fb838338624.zip
Adjust fix_alloc sizes to guarantee they fit a dd block
This failed on 32-bit builds, and wasn't noticed because 32-bit debug builds didn't run during the test period.
Diffstat (limited to 'erts/emulator/beam/erl_alloc_util.c')
-rw-r--r--erts/emulator/beam/erl_alloc_util.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/erts/emulator/beam/erl_alloc_util.c b/erts/emulator/beam/erl_alloc_util.c
index 1c95385649..77f52a5fe6 100644
--- a/erts/emulator/beam/erl_alloc_util.c
+++ b/erts/emulator/beam/erl_alloc_util.c
@@ -1395,8 +1395,8 @@ fix_cpool_alloc(Allctr_t *allctr, ErtsAlcType_t type, Uint size)
ErtsAlcFixList_t *fix;
fix = &allctr->fix[ERTS_ALC_FIX_TYPE_IX(type)];
- ASSERT(type == fix->type);
- ASSERT(size == fix->type_size);
+ ASSERT(type == fix->type && size == fix->type_size);
+ ASSERT(size >= sizeof(ErtsAllctrDDBlock_t));
res = fix->list;
if (res) {
@@ -1539,6 +1539,7 @@ fix_nocpool_alloc(Allctr_t *allctr, ErtsAlcType_t type, Uint size)
fix = &allctr->fix[ERTS_ALC_FIX_TYPE_IX(type)];
ASSERT(type == fix->type && size == fix->type_size);
+ ASSERT(size >= sizeof(ErtsAllctrDDBlock_t));
ERTS_DBG_CHK_FIX_LIST(allctr, fix, ix, 1);
fix->u.nocpool.used++;
@@ -6617,7 +6618,6 @@ erts_alcu_start(Allctr_t *allctr, AllctrInit_t *init)
allctr->fix[i].type = ERTS_ALC_N2T(i + ERTS_ALC_N_MIN_A_FIXED_SIZE);
allctr->fix[i].list_size = 0;
allctr->fix[i].list = NULL;
- ASSERT(allctr->fix[i].type_size >= sizeof(ErtsAllctrDDBlock_t));
if (ERTS_ALC_IS_CPOOL_ENABLED(allctr)) {
allctr->fix[i].u.cpool.min_list_size = 0;
allctr->fix[i].u.cpool.shrink_list = 0;