How much do we need to worry about portability?  Are there still implementations where `free(NULL)` isn't allowed?