#include <stdlib.h>
#include <string.h>

void *realloc(void *old,size_t nsize)
{
    size_t osize;void *new;
    union _mheader *mp;
    if(!old) return(malloc(nsize));
    mp=(union _mheader *)old;
    mp--;
    osize=(mp->s.size-1)*sizeof(union _mheader);
    if(new=malloc(nsize)){
        memcpy(new,old,osize>nsize ? nsize:osize);
        free(old);
    }
    return(new);
}

