if (last_bfp != rbufp)
if (last_bfp && last_bfp != rbufp)
__big_delete(hashp, bufp)	HTAB *hashp;	BUFHEAD *bufp;{	register BUFHEAD *last_bfp, *rbufp;	u_int16_t *bp, pageno;	int key_done, n;	rbufp = bufp;	last_bfp = NULL;	bp = (u_int16_t *)bufp->page;	pageno = 0;	key_done = 0;	while (!key_done || (bp[2] != FULL_KEY_DATA)) {		if (bp[2] == FULL_KEY || bp[2] == FULL_KEY_DATA)			key_done = 1;		/*		 * If there is freespace left on a FULL_KEY_DATA page, then		 * the data is short and fits entirely on this page, and this		 * is the last page.		 */		if (bp[2] == FULL_KEY_DATA && FREESPACE(bp))			break;		pageno = bp[bp[0] - 1];		rbufp->flags |= BUF_MOD;		rbufp = __get_buf(hashp, pageno, rbufp, 0);		if (last_bfp)			__free_ovflpage(hashp, last_bfp);		last_bfp = rbufp;		if (!rbufp)			return (-1);		/* Error. */		bp = (u_int16_t *)rbufp->page;	}	/*	 * If we get here then rbufp points to the last page of the big	 * key/data pair.  Bufp points to the first one -- it should now be	 * empty pointing to the next page after this pair.  Can't free it	 * because we don't have the page pointing to it.	 */	/* This is information from the last page of the pair. */	n = bp[0];	pageno = bp[n - 1];	/* Now, bp is the first page of the pair. */	bp = (u_int16_t *)bufp->page;	if (n > 2) {		/* There is an overflow page. */		bp[1] = pageno;		bp[2] = OVFLPAGE;		bufp->ovfl = rbufp->ovfl;	} else		/* This is the last page. */		bufp->ovfl = NULL;	n -= 2;	bp[0] = n;	FREESPACE(bp) = hashp->BSIZE - PAGE_META(n);	OFFSET(bp) = hashp->BSIZE - 1;	bufp->flags |= BUF_MOD;	if (rbufp)		__free_ovflpage(hashp, rbufp);	if (last_bfp != rbufp)		__free_ovflpage(hashp, last_bfp);	hashp->NKEYS--;	return (0);}