Por que a fclose (NULL) da glibc causa falha de segmentação em vez de retornar erro?

De acordo com a página manfclose(3):

VALOR DE RETORNO

Após a conclusão bem-sucedida, 0 é retornado. De outra forma,EOF é retornado e a variável globalerrno está definido para indicar o erro. Em qualquer caso, qualquer acesso adicional (incluindo outra chamada parafclose()) para o fluxo resulta em comportamento indefinido.

ERROS

EBADF O descritor de arquivo subjacentefp não é válido.

ofclose() função também pode falhar e definirerrno para qualquer um dos erros especificados para as rotinasclose(2), write(2) oufflush(3).

Clarofclose(NULL) deve falhar, mas espero que ele retorne com umerrno normalmente em vez de morrer por falha de segmentação diretamente. Existe algum motivo desse comportamento?

Desde já, obrigado.

ATUALIZAÇÃO: vou colocar meu código aqui (estou tentandostrerror(), particularmente).

FILE *not_exist = NULL;

not_exist = fopen("nonexist", "r");
if(not_exist == NULL){
    printError(errno);
}

if(fclose(not_exist) == EOF){
    printError(errno);
}

questionAnswers(5)

yourAnswerToTheQuestion