summaryrefslogtreecommitdiffstats
path: root/tests/ttk/entry.test
diff options
context:
space:
mode:
authorjenglish <jenglish@flightlab.com>2007-05-18 21:46:10 (GMT)
committerjenglish <jenglish@flightlab.com>2007-05-18 21:46:10 (GMT)
commit8930fea610db5a00f787a35a28a1f2a43dad6840 (patch)
treedaacf52364071c6ac1bda0b6495d801ab2929071 /tests/ttk/entry.test
parent8a5f0dbbec9daac56f2e20b47a49e915fff54e47 (diff)
downloadtk-8930fea610db5a00f787a35a28a1f2a43dad6840.zip
tk-8930fea610db5a00f787a35a28a1f2a43dad6840.tar.gz
tk-8930fea610db5a00f787a35a28a1f2a43dad6840.tar.bz2
EntrySetValue: Ensure that widget is in a consistent state before setting
the linked -textvariable. Previously, it was possible for [$e index insert] to point past the end of the string, leading to heap corruption [Bug 1721532].
Diffstat (limited to 'tests/ttk/entry.test')
-rw-r--r--tests/ttk/entry.test21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/ttk/entry.test b/tests/ttk/entry.test
index 3ac9182..929e856 100644
--- a/tests/ttk/entry.test
+++ b/tests/ttk/entry.test
@@ -259,4 +259,25 @@ test entry-8.2a "Followup to test 8.2" -body {
} -result ::test::foo -cleanup { destroy .e }
# For 8.2a, -result {} would also be sensible.
+test entry-9.1 "Index range invariants" -setup {
+ # See bug#1721532 for discussion
+ proc entry-9.1-trace {n1 n2 op} {
+ set ::V NO!
+ }
+ variable V
+ trace add variable V write entry-9.1-trace
+ ttk::entry .e -textvariable V
+} -body {
+ set result [list]
+ .e insert insert a ; lappend result [.e index insert] [.e index end]
+ .e insert insert b ; lappend result [.e index insert] [.e index end]
+ .e insert insert c ; lappend result [.e index insert] [.e index end]
+ .e insert insert d ; lappend result [.e index insert] [.e index end]
+ .e insert insert e ; lappend result [.e index insert] [.e index end]
+ set result
+} -result [list 1 3 2 3 3 3 3 3 3 3] -cleanup {
+ unset V
+ destroy .e
+}
+
tcltest::cleanupTests