Desalocando memória (Linguagem C)

Peguei o seguinte trecho de código:

void destroy(Stack * s) { if (s != NULL) { free(s); } }

Esse if é mesmo necessário?
Digo… se o ponteiro for NULL, free(s) não vai ter efeito algum, vai?

De fato,

Fonte: http://www.cplusplus.com/reference/clibrary/cstdlib/free/

Então a rigor você não precisa disso.