FIX: Crash with invalid default format settings (fixes #2772)

This commit is contained in:
Alexander Koblov 2026-03-04 18:20:08 +03:00
commit f8342e72a1
2 changed files with 21 additions and 3 deletions

View file

@ -180,9 +180,9 @@ begin
begin
DefaultFormatSettings.ThousandSeparator:= ' ';
end;
{$IFDEF UNIX}
uMyUnix.FixDateTimeSeparators;
{$ENDIF}
{$IF DEFINED(UNIX)}
uMyUnix.FixFormatSettings;
{$ENDIF}
FixDateNamesToUTF8;
DCDebug(GetVersionInformation);

View file

@ -118,6 +118,10 @@ function FindExecutableInSystemPath(var FileName: String): Boolean;
function ExecutableInSystemPath(const FileName: String): Boolean;
function GetDefaultAppCmd(const FileName: String): String;
function GetFileMimeType(const FileName: String): String;
{en
Fix invalid default format settings
}
procedure FixFormatSettings;
{en
Fix separators in case they are broken UTF-8 characters
(FPC takes only first byte as it doesn't support Unicode).
@ -369,6 +373,20 @@ begin
end;
{$ENDIF}
procedure FixFormatSettings;
begin
try
FormatDateTime(DefaultFormatSettings.ShortDateFormat, Now);
except
on E: Exception do
begin
DebugLn('Warning: %s (%s)', [E.Message, DefaultFormatSettings.ShortDateFormat]);
DefaultFormatSettings.ShortDateFormat:= 'yyyy.mm.dd';
end;
end;
FixDateTimeSeparators;
end;
procedure FixDateTimeSeparators;
var
TimeEnv: String;