From 61c8a2b1e7c17a1d5c88214452816b496b26f4a1 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Tue, 21 Jan 2020 16:49:59 +0100 Subject: [PATCH] fixes a critical times.nim bug reported on IRC [backport] (#13216) (cherry picked from commit bdb7c82c6aaf60392285cfea43c65c5b9b919e27) --- lib/pure/strformat.nim | 3 +++ lib/pure/times.nim | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/pure/strformat.nim b/lib/pure/strformat.nim index 257751088c..1233317135 100644 --- a/lib/pure/strformat.nim +++ b/lib/pure/strformat.nim @@ -707,6 +707,9 @@ when isMainModule: var tm = fromUnix(0) discard &"{tm}" + var noww = now() + check &"{noww}", $noww + # Unicode string tests check &"""{"αβγ"}""", "αβγ" check &"""{"αβγ":>5}""", " αβγ" diff --git a/lib/pure/times.nim b/lib/pure/times.nim index 9af39920d8..4cf8a5e988 100644 --- a/lib/pure/times.nim +++ b/lib/pure/times.nim @@ -2316,9 +2316,10 @@ proc format*(dt: DateTime, f: static[string]): string {.raises: [].} = const f2 = initTimeFormat(f) result = dt.format(f2) -template formatValue*(result: var string; value: DateTime, specifier: string) = +proc formatValue*(result: var string; value: DateTime, specifier: string) = ## adapter for strformat. Not intended to be called directly. - result.add format(value, specifier) + result.add format(value, + if specifier.len == 0: "yyyy-MM-dd'T'HH:mm:sszzz" else: specifier) proc format*(time: Time, f: string, zone: Timezone = local()): string {.raises: [TimeFormatParseError].} =