Before this patch, Ada.Directories.Modification_Time called
GetFileAttributesExA under the hood on Windows. That would sometimes
fail to work with files whose names were non-ASCII.
This patch replaces the call to GetFileAttributesExA with a call to
GetFileAttributesEx preceded by an encoding scheme conversion, as is
done in other functions of the run-time library. This fixes the issues
that were observed with the previous implementations.
gcc/ada/
* adaint.c (__gnat_file_time): Fix Windows version.
long long ll_time;
} t_write;
- if (!GetFileAttributesExA(name, GetFileExInfoStandard, &fad)) {
+ TCHAR wname [GNAT_MAX_PATH_LEN + 2];
+ int name_len;
+
+ S2WSC (wname, name, GNAT_MAX_PATH_LEN + 2);
+ name_len = _tcslen (wname);
+
+ if (name_len > GNAT_MAX_PATH_LEN)
+ return LLONG_MIN;
+
+ if (!GetFileAttributesEx(wname, GetFileExInfoStandard, &fad)) {
return LLONG_MIN;
}