/*
 * free.c
 */


#include<sys/types.h>
#include<errno.h>
#include<string.h>
#include<unistd.h>
#include<signal.h>
#include<ctype.h>
#include<limits.h>
#include"malloc.h"
#if DEBUG
#include<stdio.h>
#endif


void free(void *ptr)
{
	int index;
	MALLOC_HEAD *head;


	if (ptr == NULL)
		return;

	head = (MALLOC_HEAD*)ptr-1;
	if (head->head.magic != MAGIC_NUMBER)	/* ヒープが破壊されている。 */
	{
		fprintf(stderr,"free():Heap is uncomplete! Call from 0x%x\n",*((uint*)&ptr - 1));
		return;
	}

	index = head->head.index;
	head->next = nextHead[index];
	nextHead[index] = head;
}
