add: f->size=size;
context: void qm_free(struct qm_block* qm, void* p){	struct qm_frag* f;	struct qm_frag* prev;	struct qm_frag* next;	struct qm_frag_end *end;	unsigned int overhead;	unsigned int size;	if (p==0) {		DBG("WARNING:qm_free: free(0) called\n");		return;	}	prev=next=0;	f=(struct qm_frag*) ((char*)p-sizeof(struct qm_frag));	overhead=sizeof(struct qm_frag)+sizeof(struct qm_frag_end);	next=FRAG_NEXT(f);	size=f->size;	qm->used-=size;	qm->real_used-=size;	if (((char*)next < (char*)qm->last_frag_end) &&( next->u.is_free)){		/* join */		qm_detach_free(qm, next);		size+=next->size+overhead;		qm->real_used-=overhead;	}		if (f > qm->first_frag){		prev=FRAG_PREV(f);		/*	(struct qm_frag*)((char*)f - (struct qm_frag_end*)((char*)f-								sizeof(struct qm_frag_end))->size);*/		if (prev->u.is_free){			/*join*/			qm_detach_free(qm, prev);			size+=prev->size+overhead;			qm->real_used-=overhead;			f=prev;		}	}	FRAG_END(f)->size=f->size;	qm_insert_free(qm, f);}