- }
- newinfo = (malloc_info *) align (mdp, newsize * sizeof (malloc_info));
- if (newinfo == NULL)
- {
- mdp -> morecore (mdp, -size);
- return (NULL);
- }
- memset ((void*) newinfo, 0, newsize * sizeof (malloc_info));
- memcpy ((void*) newinfo, (void*) mdp -> heapinfo,
- mdp -> heapsize * sizeof (malloc_info));
- oldinfo = mdp -> heapinfo;
- newinfo[BLOCK (oldinfo)].busy.type = 0;
- newinfo[BLOCK (oldinfo)].busy.info.size
- = BLOCKIFY (mdp -> heapsize * sizeof (malloc_info));
- mdp -> heapinfo = newinfo;
- __mmalloc_free (mdp, (void*)oldinfo);
- mdp -> heapsize = newsize;
+
+ /* Copy old info into new location */
+ oldinfo = mdp->heapinfo;
+ newinfo = (malloc_info *) align(mdp, newsize * sizeof(malloc_info));
+ memset(newinfo, 0, newsize * sizeof(malloc_info));
+ memcpy(newinfo, oldinfo, mdp->heapsize * sizeof(malloc_info));
+ mdp->heapinfo = newinfo;
+
+ /* mark the space previously occupied by the block info as free by first marking it
+ * as occupied in the regular way, and then freing it */
+ newinfo[BLOCK(oldinfo)].type = 0;
+ newinfo[BLOCK(oldinfo)].busy_block.size = BLOCKIFY(mdp->heapsize * sizeof(malloc_info));
+ newinfo[BLOCK(oldinfo)].busy_block.busy_size = size;
+ mfree(mdp, (void *) oldinfo);
+ mdp->heapsize = newsize;