[fpc-devel] TimeReFormat in FormatDateTime
Sergei Gorelkin
sergei_gorelkin at mail.ru
Tue Apr 8 19:20:25 CEST 2008
Michael Van Canneyt wrote:
> =
> It should not be disabled, but fixed properly. =
> This code is there for a reason:
> =
> Normal time formatting is hh:nn (n =3D minutes). But Delphi explicitly
> allows also hh:mm for time, even though mm is the placeholder for month.
> =
I have a more complex patch, that fixes this issue together with a =
number of others. Have a look.
a) Enables threadsafe versions of date/time formatting functions (this =
was primary goal of the patching).
b) Favours case of AM/PM and A/P tokens, as Delphi does.
c) More tolerant to mistakes in format strings (e.g. 'mmmmm' and longer =
will be treated as 'mmmm'; empty format string is treated as 'c' - again =
Delphi compatible).
d) Prevents possibility of endless recursion in certain cases of =
malformed format settings, e.g. when ShortTimeFormat contains 't'.
Since format settings may come from anywhere (including untrusted =
sources), this is an important security issue.
e) Refactored to exclude ansistring operations (except final setting of =
result), this should increase performance.
As for TimeReformat, I excluded it primarily for performance reasons, =
substituting with a flag that causes 'm' be treated as 'n' even if it is =
not preceded by 'h'. This preserves existing logic as much as possible, =
but am/pm tokens won't be affected because they are handled in another =
branch of code.
The patch also refactors CurrentYear function to exclude unnecessary =
date encoding and decoding.
I tested it locally on Russian locale and it works fine, however I =
cannot guarantee that everything is correct on every locale.
Best regards,
Sergei
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dati_patch.zip
Type: application/x-zip-compressed
Size: 3567 bytes
Desc: not available
Url : http://lists.freepascal.org/lists/fpc-devel/attachments/20080408/ea28=
da9b/dati_patch-0001.bin
More information about the fpc-devel
mailing list