if ((hashp->tmp_key = (char *)malloc(totlen)) == NULL)
if ((hashp->tmp_key = (char *)malloc((size_t)totlen)) == NULL)
collect_key(	HTAB *hashp,	BUFHEAD *bufp,	int len,	DBT *val,	int set){	BUFHEAD *xbp;	char *p;	int mylen, totlen;	uint16 *bp, save_addr;	p = bufp->page;	bp = (uint16 *)p;	mylen = hashp->BSIZE - bp[1];	save_addr = bufp->addr;	totlen = len + mylen;	if (bp[2] == FULL_KEY || bp[2] == FULL_KEY_DATA) {    /* End of Key. */		if (hashp->tmp_key != NULL)			free(hashp->tmp_key);		if ((hashp->tmp_key = (char *)malloc(totlen)) == NULL)			return (-1);		if (__big_return(hashp, bufp, 1, val, set))			return (-1);	} else {		xbp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0);		if (!xbp || ((totlen =		    collect_key(hashp, xbp, totlen, val, set)) < 1))			return (-1);	}	if (bufp->addr != save_addr) {		errno = EINVAL;		/* MIS -- OUT OF BUFFERS */		return (-1);	}	memmove(&hashp->tmp_key[len], (bufp->page) + bp[1], mylen);	return (totlen);}