En su columna CodeSOD, Remy Porter relata la caza de un error por parte de una desarrolladora llamada Greta, que trabaja con un entorno de desarrollo Pascal antiguo. Su programa informaba constantemente que ciertos archivos no existían, aunque claramente sí estaban presentes. El rastro llevó hasta la biblioteca del sistema incluida en el entorno de ejecución multiplataforma Delphi y Kylix de Borland, con derechos de autor originales de 1995 a 2001.

La función FileExists no comprueba directamente la presencia de un archivo. En su lugar, llama a FileAge, que usa la función de la API de Windows FindFirstFile para localizar el archivo y luego FileTimeToDosDateTime para convertir la fecha de última escritura a un formato de fecha y hora estilo DOS. Si la conversión tiene éxito, FileAge devuelve la marca de tiempo codificada. Si algún paso falla, FileAge devuelve -1, y FileExists interpreta entonces que el archivo no existe cada vez que FileAge devuelve -1.

El verdadero fallo está en otro sitio: FileTimeToDosDateTime devuelve un booleano de éxito y establece un código de error de Windows si falla, pero el código de la biblioteca Delphi nunca comprueba ni lo uno ni lo otro. Un proceso en el sistema de Greta escribía archivos sin establecer una marca de última escritura. Sin una marca de tiempo válida que convertir, FileTimeToDosDateTime fallaba en silencio, FileAge devolvía -1, y FileExists concluía erróneamente que el archivo no existía, aunque estaba ahí, en el disco.