summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2011-04-12 20:04:11 (GMT)
committerdgp <dgp@users.sourceforge.net>2011-04-12 20:04:11 (GMT)
commit37b1332c5e9a5098b66e6775c9073680f9cf94fa (patch)
tree31ff3921f38c2e5d92fec768e544fc37c2ab5333
parent1eb966fd80e4ebb3ff65e00e5f23a682790ab385 (diff)
downloadtcl-37b1332c5e9a5098b66e6775c9073680f9cf94fa.zip
tcl-37b1332c5e9a5098b66e6775c9073680f9cf94fa.tar.gz
tcl-37b1332c5e9a5098b66e6775c9073680f9cf94fa.tar.bz2
Repair corruption in [string reverse] when string rep invalidation failed
to also reset the bytes allocated for string rep to zero [Bug 3285472].
-rw-r--r--ChangeLog6
-rw-r--r--generic/tclStringObj.c1
-rw-r--r--tests/string.test5
-rw-r--r--[-rwxr-xr-x]tools/configure0
4 files changed, 12 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index dcf2f36..14fb1e4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-04-12 Don Porter <dgp@users.sourceforge.net>
+
+ * generic/tclStringObj.c: Repair corruption in [string reverse]
+ * tests/string.test: when string rep invalidation failed to also
+ reset the bytes allocated for string rep to zero [Bug 3285472].
+
2011-04-12 Venkat Iyer <venkat@comit.com>
* library/tzdata/Atlantic/Stanley: Update to Olson tzdata2011f
diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c
index 7437ee4..17bed1b 100644
--- a/generic/tclStringObj.c
+++ b/generic/tclStringObj.c
@@ -2758,6 +2758,7 @@ TclStringObjReverse(
source[i++] = tmp;
}
Tcl_InvalidateStringRep(objPtr);
+ stringPtr->allocated = 0;
return objPtr;
}
diff --git a/tests/string.test b/tests/string.test
index 6b00f3a..cddfe4c 100644
--- a/tests/string.test
+++ b/tests/string.test
@@ -1608,6 +1608,11 @@ test string-24.11 {string reverse command - corner case} {
set y \udead
string reverse $x$y
} \udead\ubeef
+test string-24.12 {string reverse command - corner case} {
+ set x \ubeef
+ set y \udead
+ string is ascii [string reverse $x$y]
+} 0
test string-25.1 {string is list} {
string is list {a b c}
diff --git a/tools/configure b/tools/configure
index 98b5867..98b5867 100755..100644
--- a/tools/configure
+++ b/tools/configure