summaryrefslogtreecommitdiffstats
path: root/generic/tclClockFmt.c
diff options
context:
space:
mode:
authorapnadkarni <apnmbx-wits@yahoo.com>2024-05-24 16:05:19 (GMT)
committerapnadkarni <apnmbx-wits@yahoo.com>2024-05-24 16:05:19 (GMT)
commitb7eeffcdef4802086b4f43db1619b2784d74aa79 (patch)
tree0e5d90abdf8a9e69a0fc4383d8ceac9d115a02c4 /generic/tclClockFmt.c
parent14145609e7b52c939ce5bc328b87b8ab02c7a431 (diff)
parentb230de2a4d3e8748a542c21d0dfde9e357ac0b0a (diff)
downloadtcl-b7eeffcdef4802086b4f43db1619b2784d74aa79.zip
tcl-b7eeffcdef4802086b4f43db1619b2784d74aa79.tar.gz
tcl-b7eeffcdef4802086b4f43db1619b2784d74aa79.tar.bz2
Merge trunk
Diffstat (limited to 'generic/tclClockFmt.c')
-rw-r--r--generic/tclClockFmt.c91
1 files changed, 49 insertions, 42 deletions
diff --git a/generic/tclClockFmt.c b/generic/tclClockFmt.c
index 140ecdd..a50b43f 100644
--- a/generic/tclClockFmt.c
+++ b/generic/tclClockFmt.c
@@ -249,7 +249,7 @@ Clock_itoaw(
val /= 10;
*p-- = '0' + c;
} while (val > 0);
- /* fulling with pad-char */
+ /* filling with pad-char */
while (p >= buf) {
*p-- = padchar;
}
@@ -290,7 +290,7 @@ Clock_itoaw(
if (padchar != '0') {
*p-- = '-';
}
- /* fulling with pad-char */
+ /* filling with pad-char */
while (p >= buf + 1) {
*p-- = padchar;
}
@@ -347,7 +347,7 @@ Clock_witoaw(
val /= 10;
*p-- = '0' + c;
} while (val > 0);
- /* fulling with pad-char */
+ /* filling with pad-char */
while (p >= buf) {
*p-- = padchar;
}
@@ -398,7 +398,7 @@ Clock_witoaw(
if (padchar != '0') {
*p-- = '-';
}
- /* fulling with pad-char */
+ /* filling with pad-char */
while (p >= buf + 1) {
*p-- = padchar;
}
@@ -2140,16 +2140,13 @@ EstimateTokenCount(
return ++tokcnt;
}
-#define AllocTokenInChain(tok, chain, tokCnt, type) \
- if (++(tok) >= (chain) + (tokCnt)) { \
- chain = (type)Tcl_AttemptRealloc((char *)(chain), \
+#define AllocTokenInChain(tok, chain, tokCnt, type) \
+ if (++(tok) >= (chain) + (tokCnt)) { \
+ chain = (type)Tcl_Realloc((char *)(chain), \
(tokCnt + CLOCK_MIN_TOK_CHAIN_BLOCK_SIZE) * sizeof(*(tok))); \
- if ((chain) == NULL) { \
- goto done; \
- } \
- (tok) = (chain) + (tokCnt); \
- (tokCnt) += CLOCK_MIN_TOK_CHAIN_BLOCK_SIZE; \
- } \
+ (tok) = (chain) + (tokCnt); \
+ (tokCnt) += CLOCK_MIN_TOK_CHAIN_BLOCK_SIZE; \
+ } \
memset(tok, 0, sizeof(*(tok)));
/*
@@ -2282,7 +2279,7 @@ ClockGetOrParseScanFormat(
continue;
}
default:
- if (*p == ' ' || isspace(UCHAR(*p))) {
+ if (isspace(UCHAR(*p))) {
tok->map = &ScnSpaceTokenMap;
tok->tokWord.start = p++;
while (p < e && isspace(UCHAR(*p))) {
@@ -2296,28 +2293,33 @@ ClockGetOrParseScanFormat(
tokCnt++;
continue;
}
- word_tok:
- {
- ClockScanToken *wordTok = tok;
-
- if (tok > scnTok && (tok - 1)->map == &ScnWordTokenMap) {
- wordTok = tok - 1;
- }
- /* new word token */
- if (wordTok == tok) {
+ word_tok:
+ {
+ /* try continue with previous word token */
+ ClockScanToken *wordTok = tok - 1;
+
+ if (wordTok < scnTok || wordTok->map != &ScnWordTokenMap) {
+ /* start with new word token */
+ wordTok = tok;
wordTok->tokWord.start = p;
wordTok->map = &ScnWordTokenMap;
+ }
+
+ do {
+ if (isspace(UCHAR(*p))) {
+ fss->scnSpaceCount++;
+ }
+ p = Tcl_UtfNext(p);
+ } while (p < e && *p != '%');
+ wordTok->tokWord.end = p;
+
+ if (wordTok == tok) {
AllocTokenInChain(tok, scnTok, fss->scnTokC, ClockScanToken *);
tokCnt++;
}
- if (isspace(UCHAR(*p))) {
- fss->scnSpaceCount++;
}
- p = Tcl_UtfNext(p);
- wordTok->tokWord.end = p;
break;
}
- }
}
/* calculate end distance value for each tokens */
@@ -2349,9 +2351,8 @@ ClockGetOrParseScanFormat(
fss->scnTok = scnTok;
fss->scnTokC = tokCnt;
}
- done:
- Tcl_MutexUnlock(&ClockFmtMutex);
+ Tcl_MutexUnlock(&ClockFmtMutex);
return fss;
}
@@ -3335,23 +3336,29 @@ ClockGetOrParseFmtFormat(
continue;
}
default:
- word_tok: {
- ClockFormatToken *wordTok = tok;
-
- if (tok > fmtTok && (tok - 1)->map == &FmtWordTokenMap) {
- wordTok = tok - 1;
- }
- if (wordTok == tok) {
+ word_tok:
+ {
+ /* try continue with previous word token */
+ ClockFormatToken *wordTok = tok - 1;
+
+ if (wordTok < fmtTok || wordTok->map != &FmtWordTokenMap) {
+ /* start with new word token */
+ wordTok = tok;
wordTok->tokWord.start = p;
wordTok->map = &FmtWordTokenMap;
+ }
+ do {
+ p = Tcl_UtfNext(p);
+ } while (p < e && *p != '%');
+ wordTok->tokWord.end = p;
+
+ if (wordTok == tok) {
AllocTokenInChain(tok, fmtTok, fss->fmtTokC, ClockFormatToken *);
tokCnt++;
}
- p = Tcl_UtfNext(p);
- wordTok->tokWord.end = p;
+ }
break;
}
- }
}
/* correct count of real used tokens and free mem if desired
@@ -3367,7 +3374,7 @@ ClockGetOrParseFmtFormat(
fss->fmtTok = fmtTok;
fss->fmtTokC = tokCnt;
}
- done:
+
Tcl_MutexUnlock(&ClockFmtMutex);
return fss;
}
@@ -3560,7 +3567,7 @@ ClockFrmScnClearCaches(void)
}
void
-ClockFrmScnFinalize()
+ClockFrmScnFinalize(void)
{
if (!initialized) {
return;