summaryrefslogtreecommitdiffstats
path: root/generic/tclStringObj.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2013-01-27 23:38:17 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2013-01-27 23:38:17 (GMT)
commit9f4a3c6758a3a0b971f85c866080b98f9a4292ae (patch)
tree8fe6025add16d7354e1a9be3644c667b4407cd2c /generic/tclStringObj.c
parent5c6ecd58dc43872d579e7ee7d0cf65eb110aaddd (diff)
downloadtcl-novem_no_shimmer_string_length.zip
tcl-novem_no_shimmer_string_length.tar.gz
tcl-novem_no_shimmer_string_length.tar.bz2
New experiment (ended), regarding non-shimmering "string length"novem_no_shimmer_string_length
Diffstat (limited to 'generic/tclStringObj.c')
-rw-r--r--generic/tclStringObj.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c
index 64c661b..040c287 100644
--- a/generic/tclStringObj.c
+++ b/generic/tclStringObj.c
@@ -483,6 +483,17 @@ Tcl_GetCharLength(
return length;
}
+ if ((objPtr->typePtr == &tclDictType)
+ || (objPtr->typePtr == &tclListType)) {
+ List *list = objPtr->internalRep.twoPtrValue.ptr1;
+ if (list->numChars == -1) {
+ (void) TclGetString(objPtr);
+ TclNumUtfChars(numChars, objPtr->bytes, objPtr->length);
+ list->numChars = numChars;
+ }
+ return list->numChars;
+ }
+
/*
* OK, need to work with the object as a string.
*/