free(NULL) is a no-op