Tienes, razón, cuando es nil no peta, sorry.
Entonces me he molestado en hacer una Liberar que no sirve pa na...
Ahora, si se intenta liberar algo que nunca se creó pero que no está iniciado a nil, sí que peta. Lo siguiente peta.
Código Delphi
[-]
procedure TFrmPruebas.Button1Click(Sender: TObject);
var
q: TSqlQuery;
begin
q.Free;
end;