From 14c8708b6524c0d21f4bcf0b755cc86e29a1bb35 Mon Sep 17 00:00:00 2001 From: sebres Date: Tue, 7 May 2024 19:04:29 +0000 Subject: closes [a858d95f4bfddafb]: adjust word-token pointer after possible realloc --- generic/tclClockFmt.c | 2 ++ tests/clock.test | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/generic/tclClockFmt.c b/generic/tclClockFmt.c index 154c8ee..fdac4fb 100644 --- a/generic/tclClockFmt.c +++ b/generic/tclClockFmt.c @@ -2307,6 +2307,7 @@ ClockGetOrParseScanFormat( wordTok->tokWord.start = p; wordTok->map = &ScnWordTokenMap; AllocTokenInChain(tok, scnTok, fss->scnTokC, ClockScanToken *); + wordTok = tok - 1; tokCnt++; } if (isspace(UCHAR(*p))) { @@ -3344,6 +3345,7 @@ ClockGetOrParseFmtFormat( wordTok->tokWord.start = p; wordTok->map = &FmtWordTokenMap; AllocTokenInChain(tok, fmtTok, fss->fmtTokC, ClockFormatToken *); + wordTok = tok - 1; tokCnt++; } p = Tcl_UtfNext(p); diff --git a/tests/clock.test b/tests/clock.test index 8072a68..ef41ad5 100644 --- a/tests/clock.test +++ b/tests/clock.test @@ -375,6 +375,10 @@ test clock-1.9 "clock arguments: option doubly present" { list [catch {clock format 0 -gmt 1 -gmt 0} result] $result } {1 {bad option "-gmt": doubly present}} +test clock-1.10 {clock format: text with token (bug [a858d95f4bfddafb])} { + clock format 0 -format text(%d) -gmt 1 +} {text(01)} + # BEGIN testcases2 # Test formatting of Gregorian year, month, day, all formats @@ -18924,6 +18928,10 @@ test clock-6.22.20 {Greedy match (second space wins as date-time separator)} { clock format [clock scan "111 2 13120" -format "%y%m%d %H%M%S" -gmt 1] -locale en -gmt 1 } {Sun Jan 02 13:12:00 GMT 2011} +test clock-6.23 {clock scan: text with token (bug [a858d95f4bfddafb])} { + clock scan {text(01)} -format text(%d) -gmt 1 -base 0 +} 0 + test clock-7.1 {Julian Day} { clock scan 0 -format %J -gmt true -- cgit v0.12