I see that Blender’s “guardedalloc” memory-management system treats a call to
MEM_freeN with a NULL pointer as a programming error. This leads to a lot of places in the code where a pointer first has to be checked that it is not NULL before disposing of it.
I would say this is contrary to established programming practice. For example, the standard POSIX/C
free(3) call explicitly allows the passing of a NULL pointer, whereupon “no operation is performed”.
This is also the semantics of the C++
I think that changing
MEM_freeN to behave the same way would allow a lot of simplification of code throughout Blender. And less code means less chance for bugs to get in!