X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fthreads%2Fmalloc.c;h=8e6b4591ea87ecae09337ae5d741c89a68bdcb9a;hb=715ca79351a7f4cd3bed471e1cae934f24b5ed09;hp=487e93875ef4124ac314a7355429d4c2a632d1ab;hpb=8382bdd7884a6d38f7529e0517dd9a7083f4ce73;p=pintos-anon diff --git a/src/threads/malloc.c b/src/threads/malloc.c index 487e938..8e6b459 100644 --- a/src/threads/malloc.c +++ b/src/threads/malloc.c @@ -161,7 +161,7 @@ calloc (size_t a, size_t b) void *p; size_t size; - /* Calculate block size. */ + /* Calculate block size and make sure it fits in size_t. */ size = a * b; if (size < a || size < b) return NULL; @@ -198,7 +198,7 @@ free (void *p) } #ifndef NDEBUG - memset (b, 0xcd, d->block_size); + memset (b, 0xcc, d->block_size); #endif lock_acquire (&d->lock); @@ -228,8 +228,16 @@ static struct arena * block_to_arena (struct block *b) { struct arena *a = pg_round_down (b); + + /* Check that the arena is valid. */ ASSERT (a != NULL); ASSERT (a->magic == ARENA_MAGIC); + + /* Check that the block is properly aligned for the arena. */ + ASSERT (a->desc == NULL + || (pg_ofs (b) - sizeof *a) % a->desc->block_size == 0); + ASSERT (a->desc != NULL || pg_ofs (b) == sizeof *a); + return a; }