Path: ...!news.mixmin.net!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Blady
Newsgroups: fr.comp.lang.ada
Subject: Re: Crash de Start_Search
Date: Wed, 18 Oct 2023 21:12:07 +0200
Organization: A noiseless patient Spider
Lines: 58
Message-ID:
References:
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Wed, 18 Oct 2023 19:12:08 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="1873db54edfde95d223be82464085ff6";
logging-data="4016348"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18reNBa6cT3fFXAu67dDx32"
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0)
Gecko/20100101 Thunderbird/102.15.1
Cancel-Lock: sha1:N5pULWZ1vvAe+4Bf4or1Qi6tc8k=
In-Reply-To:
Content-Language: fr, en-US
Bytes: 3025
Le 17/10/2023 à 09:44, DrPi a écrit :
>
> Le 16/10/2023 à 23:35, DrPi a écrit :
> > > J'ai oublié de préciser que le problème est déclenché dès qu'un
> caractère non ASCII se trouve dans un nom de fichier/dossier.
> > L'encodage des caractères exotiques varie d'un système à l'autre, et
> d'une implémentation d'Ada à l'autre. Ca peut être de l'UTF8, des pages
> de code Windows...
>
> > Ici, vraisemblablement, l'encodage ne correspond pas entre le système
> et le programme. Tâche de trouver de la doc...
>
> Ce qui m'étonne, c'est que le crash se produit dans la fonction
> Dir_Search, fonction de la runtime.
> Apparemment, plus préciément, dans le calcul d'une date
> (Ada.Calendar.Arithmetic_Operations.Add).
>
> C'est étrange et je ne vois pas comment remédier à ce problème. Il n'y a
> rien à ce sujet ici :
> http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-A-16.html
Bonjour Nicolas,
J'ai testé sur macOS ça tourne :
% ./bin/test_20231018_dir_search
Test en cours...
Found : .
Found : ..
Found : Test avec entête.txt
Le code concerné est :
C_Name := Name & ASCII.NUL;
Date := C_Modification_Time (C_Name'Address);
if Date = Invalid_Time then
raise Use_Error with
"Unable to get modification time of the file """ & Name &
'"';
end if;
Je suspecte la fonction C_Modification_Time avec des caractères
accentués ayant un code différent entre Linux / macOS / Windows, ce qui
est souvent le cas pour ces fonctions codées en C :
function C_Modification_Time (N : System.Address) return
Ada.Calendar.Time;
pragma Import (C, C_Modification_Time, "__gnat_file_time");
Il faudrait aller voir dans le code C de __gnat_file_time.
Sinon tu peux toujours poster un rapport d'anomalie sur
https://gcc.gnu.org/bugzilla.
Pascal.