I usually use some defines like that:

Code:
#define _pan_remove(pan) if(pan != NULL) { if(pan->bmap != NULL) { bmap_purge(pan->bmap); ptr_remove(pan->bmap); pan->bmap = NULL; } if(pan->mouse_map != NULL) { bmap_purge(pan->mouse_map); ptr_remove(pan->mouse_map); pan->mouse_map = NULL; } if(pan->target_map != NULL) { bmap_purge(pan->target_map); ptr_remove(pan->target_map); pan->target_map = NULL; } ptr_remove(pan); } pan = NULL
#define _bmap_remove(bmap) if(bmap != NULL) { bmap_purge(bmap); ptr_remove(bmap); } bmap = NULL
#define _ptr_remove(ptr) ptr_remove(ptr); ptr=NULL



So I can do some NULL checks later.