#define FREE(p) { if(p!=NULL) free(p); p = NULL; }
freeを全部上に置き換えてpがNULLだったらfree済みだし何回でもfreeすればいい