V10/libcc/balloc.c

Compare this file to the similar file:
Show the results in this format:

#include <jstructs.h>

#define rox	r.origin.x
#define roy	r.origin.y
#define rcx	r.corner.x
#define rcy	r.corner.y

Bitmap *
balloc(r)
Rectangle r;
{
	char *malloc(), *calloc();
	register left, right;
	register Bitmap *bp;

	if ((bp=(Bitmap *)malloc(sizeof(Bitmap))) == (Bitmap *)0)
		return (Bitmap *)0;

	left = rox & ~WORDMASK;
	if ((right=rcx) & WORDMASK) {
		right |= WORDMASK;
		right ++;
	}
	bp->width = (right-left)>>WORDSHIFT;
	bp->rect = r;

	bp->base = (Word *)calloc(bp->width * (rcy-roy), sizeof(Word));
	if (bp->base == (Word *)0){
		free((char *)bp);
		return (Bitmap *)0;
	}
	bp->_null=0;
	return bp;
}

bfree(bp)
	register Bitmap *bp;
{
	if (bp) {
		free((char *)bp->base);
		free((char *)bp);
	}
}