Tk Source Code

Artifact [b66004ef]
Login

Artifact b66004ef0a9b4eab40e86055b4e177f04ba4ac27adc6aa8ace6803e6e5e8f23f:

Attachment "valgrind_test_bind.test_d509841817.log" to ticket [6e8afe51] added by fvogel 2018-11-03 22:12:07.
francois@TM:~/Documents/tcltk/fossil/tk/unix$ f stat
repository:   /home/francois/Documents/tcltk/fossil/tk/../tk.fossil
local-root:   /home/francois/Documents/tcltk/fossil/tk/
config-db:    /home/francois/.fossil
checkout:     d50984181704cf85a183093891bd6fb26c0bbc4f 2018-11-02 18:58:27 UTC
parent:       5a577497400dac92e687162d9815c6f77ffe729b 2018-10-28 13:43:56 UTC
tags:         bug6e8afe516d
comment:      64 bit problem solved, pattern buffer must be initialized. (user: gcramer)
francois@TM:~/Documents/tcltk/fossil/tk/unix$ valgrind ./tktest ../tests/bind.test
==1819== Memcheck, a memory error detector
==1819== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==1819== Using Valgrind-3.10.0 and LibVEX; rerun with -h for copyright info
==1819== Command: ./tktest ../tests/bind.test
==1819== 
==1819== Invalid read of size 1
==1819==    at 0x4C2D1D3: strcmp (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==1819==    by 0x5CF5EC3: _XimUnRegisterIMInstantiateCallback (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==1819==    by 0x5CDC8A2: XUnregisterIMInstantiateCallback (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==1819==    by 0x4F7D908: InstantiateIMCallback (tkUnixEvent.c:681)
==1819==    by 0x5CF5DA4: _XimRegisterIMInstantiateCallback (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==1819==    by 0x5CDC83B: XRegisterIMInstantiateCallback (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==1819==    by 0x4F7D036: TkpOpenDisplay (tkUnixEvent.c:184)
==1819==    by 0x4EB0E74: GetScreen (tkWindow.c:465)
==1819==    by 0x4EB0C35: CreateTopLevelWindow (tkWindow.c:348)
==1819==    by 0x4EB18DC: TkCreateMainWindow (tkWindow.c:854)
==1819==    by 0x4EC0784: CreateFrame (tkFrame.c:582)
==1819==    by 0x4EC02BC: TkListCreateFrame (tkFrame.c:468)
==1819==  Address 0x7eae850 is 0 bytes inside a block of size 1 free'd
==1819==    at 0x4C29E90: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==1819==    by 0x5CEBDFF: XSetLocaleModifiers (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==1819==    by 0x4F7D99A: OpenIM (tkUnixEvent.c:725)
==1819==    by 0x4F7D8DC: InstantiateIMCallback (tkUnixEvent.c:680)
==1819==    by 0x5CF5DA4: _XimRegisterIMInstantiateCallback (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==1819==    by 0x5CDC83B: XRegisterIMInstantiateCallback (in /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0)
==1819==    by 0x4F7D036: TkpOpenDisplay (tkUnixEvent.c:184)
==1819==    by 0x4EB0E74: GetScreen (tkWindow.c:465)
==1819==    by 0x4EB0C35: CreateTopLevelWindow (tkWindow.c:348)
==1819==    by 0x4EB18DC: TkCreateMainWindow (tkWindow.c:854)
==1819==    by 0x4EC0784: CreateFrame (tkFrame.c:582)
==1819==    by 0x4EC02BC: TkListCreateFrame (tkFrame.c:468)
==1819== 


==== bind-13.1 Tk_BindEvent procedure FAILED
==== Contents of test case:

    bind Test <KeyPress> {lappend x "%W %K Test KeyPress"}
    bind all <KeyPress> {lappend x "%W %K all KeyPress"}
    bind Test : {lappend x "%W %K Test :"}
    bind all  _ {lappend x "%W %K all _"}
    bind .t.f : {lappend x "%W %K .t.f :"}
    
    event generate .t.f <Key-colon>
    event generate .t.f <Key-plus>
    event generate .t.f <Key-underscore>
    return $x

---- Result was:
{. colon all KeyPress} {. plus all KeyPress} {. underscore all _}
---- Result should have been (exact matching):
{.t.f colon .t.f :} {.t.f colon Test :} {.t.f colon all KeyPress} {.t.f plus Test KeyPress} {.t.f plus all KeyPress} {.t.f underscore Test KeyPress} {.t.f underscore all _}
==== bind-13.1 FAILED



==== bind-13.2 Tk_BindEvent procedure FAILED
==== Contents of test case:

    bind Test <KeyPress> {lappend x "%W %K Test press any"; break}
    bind all <KeyPress> {continue; lappend x "%W %K all press any"}
    bind .t.f : {lappend x "%W %K .t.f pressed colon"}
    
    event generate .t.f <Key-colon>
    return $x

---- Result was:

---- Result should have been (exact matching):
{.t.f colon .t.f pressed colon} {.t.f colon Test press any}
==== bind-13.2 FAILED



==== bind-13.3 Tk_BindEvent procedure FAILED
==== Contents of test case:

    bind Test <KeyPress> {lappend x "%W %K Test press any"; error Test}
    bind .t.f : {lappend x "%W %K .t.f pressed colon"}
    event generate .t.f <Key-colon>
    update
    list $x $errorInfo

---- Result was:
{} {no event type or button # or keysym
    while executing
".t.c bind foo <"
    ("uplevel" body line 3)
    invoked from within
"uplevel 1 $script"}
---- Result should have been (exact matching):
{{.t.f colon .t.f pressed colon} {.t.f colon Test press any}} {Test
    while executing
"error Test"
    (command bound to event)}
==== bind-13.3 FAILED



==== bind-13.4 Tk_BindEvent procedure FAILED
==== Contents of test case:

    bind Test : {lappend x "%W %K Test"}
    bind .t.f : {lappend x "%W %K .t.f"}
    foo
    return $x

---- Result was:

---- Result should have been (exact matching):
{.t.f colon .t.f} {.t.f colon Test}
==== bind-13.4 FAILED



==== bind-13.7 Tk_BindEvent procedure FAILED
==== Contents of test case:

    bind .t.f : {lappend x "%W (.t.f binding)"}
    bind Test : {lappend x "%W (Test binding)"}
    bind all : {bind .t.f : {}; lappend x "%W (all binding)"}
    event generate .t.f <Key-colon>
    return $x

---- Result was:
{. (all binding)}
---- Result should have been (exact matching):
{.t.f (.t.f binding)} {.t.f (Test binding)} {.t.f (all binding)}
==== bind-13.7 FAILED



==== bind-13.8 Tk_BindEvent procedure FAILED
==== Contents of test case:

    bind .t.f : {lappend x "%W (.t.f binding)"}
    bind Test : {lappend x "%W (Test binding)"}
    bind all : {destroy .t.f; lappend x "%W (all binding)"}
    event generate .t.f <Key-colon>
    return $x

---- Result was:
{. (all binding)}
---- Result should have been (exact matching):
{.t.f (.t.f binding)} {.t.f (Test binding)} {.t.f (all binding)}
==== bind-13.8 FAILED



==== bind-13.13 Tk_BindEvent procedure: valid key detail FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x Key%K"
    bind .t.f <KeyRelease> "lappend x Release%K"
    event generate .t.f <Key> -keysym colon
    event generate .t.f <KeyRelease> -keysym colon
    return $x

---- Result was:

---- Result should have been (exact matching):
Keycolon Releasecolon
==== bind-13.13 FAILED



==== bind-13.14 Tk_BindEvent procedure: invalid key detail FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x Key%K"
    bind .t.f <KeyRelease> "lappend x Release%K"
    event generate .t.f <Key> -keycode -1
    event generate .t.f <KeyRelease> -keycode -1
    return $x

---- Result was:

---- Result should have been (exact matching):
Key?? Release??
==== bind-13.14 FAILED



==== bind-15.1 MatchPatterns procedure, ignoring type mismatches FAILED
==== Contents of test case:

    bind .t.f 12 {set x 1}
    set x 0
    event generate .t.f <Key-1>
    event generate .t.f <KeyRelease-1>
    event generate .t.f <Key-2>
    event generate .t.f <KeyRelease-2>
    return $x

---- Result was:
0
---- Result should have been (exact matching):
1
==== bind-15.1 FAILED



==== bind-15.2 MatchPatterns procedure, ignoring type mismatches FAILED
==== Contents of test case:

    bind .t.f 12 {set x 1}
    set x 0
    event generate .t.f <Key-1>
    event generate .t.f <Enter>
    event generate .t.f <KeyRelease-1>
    event generate .t.f <Leave>
    event generate .t.f <Key-2>
    event generate .t.f <KeyRelease-2>
    return $x

---- Result was:
0
---- Result should have been (exact matching):
1
==== bind-15.2 FAILED



==== bind-15.9 MatchPatterns procedure, modifier checks FAILED
==== Contents of test case:

    bind .t.f <M1-M2-Key> {set x 1}
    set x 0
    event generate .t.f <Key-a> -state 0x18
    return $x

---- Result was:
0
---- Result should have been (exact matching):
1
==== bind-15.9 FAILED



==== bind-15.10 MatchPatterns procedure, modifier checks FAILED
==== Contents of test case:

    bind .t.f <M1-M2-Key> {set x 1}
    set x 0
    event generate .t.f <Key-a> -state 0xfc
    return $x

---- Result was:
0
---- Result should have been (exact matching):
1
==== bind-15.10 FAILED



==== bind-15.27 MatchPatterns procedure, conflict resolution FAILED
==== Contents of test case:

    bind .t.f <KeyPress> {set x 0}
    bind .t.f 1 {set x 1}
    set x none
    event generate .t.f <Key-1>
    return $x

---- Result was:
none
---- Result should have been (exact matching):
1
==== bind-15.27 FAILED



==== bind-15.28 MatchPatterns procedure, conflict resolution FAILED
==== Contents of test case:

    bind .t.f <KeyPress> {set x 0}
    bind .t.f 1 {set x 1}
    set x none
    event generate .t.f <Key-2>
    return $x

---- Result was:
none
---- Result should have been (exact matching):
0
==== bind-15.28 FAILED



==== bind-15.29 MatchPatterns procedure, conflict resolution FAILED
==== Contents of test case:

    bind .t.f <KeyPress> {lappend x 0}
    bind .t.f 1 {lappend x 1}
    bind .t.f 21 {lappend x 2}
    set x none
    event generate .t.f <Key-2>
    event generate .t.f <KeyRelease-2>
    event generate .t.f <Key-1>
    set x

---- Result was:
none
---- Result should have been (exact matching):
none 0 2
==== bind-15.29 FAILED



==== bind-15.31 MatchPatterns procedure, conflict resolution FAILED
==== Contents of test case:

    bind .t.f <M1-Key> {set x 0}
    bind .t.f <M2-Key> {set x 1}
    event generate .t.f <Key-a> -state 0x18
    return $x

---- Result was:

---- Result should have been (exact matching):
1
==== bind-15.31 FAILED



==== bind-15.32 MatchPatterns procedure, conflict resolution FAILED
==== Contents of test case:

    bind .t.f <M2-Key> {set x 0}
    bind .t.f <M1-Key> {set x 1}
    set x none
    event generate .t.f <Key-a> -state 0x18
    return $x

---- Result was:
none
---- Result should have been (exact matching):
1
==== bind-15.32 FAILED



==== bind-16.16 ExpandPercents procedure FAILED
==== Contents of test case:

    bind .t.f <Key> {set x "%k"}
    set x none
    event generate .t.f <Key> -keycode 146
    set x

---- Result was:
none
---- Result should have been (exact matching):
146
==== bind-16.16 FAILED



==== bind-16.39 ExpandPercents procedure FAILED
==== Contents of test case:

    bind .t.f <Key> {set x "%N"}
    set x none
    event generate .t.f <Key-space>
    set x

---- Result was:
none
---- Result should have been (exact matching):
32
==== bind-16.39 FAILED



==== bind-16.40 ExpandPercents procedure FAILED
==== Contents of test case:

    bind .t.f <Key> {set x "%S"}
    set x none
    event generate .t.f <Key-space> -subwindow .t
    set x

---- Result was:
none
---- Result should have been (exact matching):
0x5000003
==== bind-16.40 FAILED



==== bind-16.41 ExpandPercents procedure FAILED
==== Contents of test case:

    bind .t.f <Key> {set x "%T"}
    set x none
    event generate .t.f <Key>
    set x

---- Result was:
none
---- Result should have been (exact matching):
2
==== bind-16.41 FAILED



==== bind-16.42 ExpandPercents procedure FAILED
==== Contents of test case:

    bind .t.f <Key> {set x "%W"}
    set x none
    event generate .t.f <Key>
    set x

---- Result was:
none
---- Result should have been (exact matching):
.t.f
==== bind-16.42 FAILED



==== bind-16.45 ExpandPercents procedure FAILED
==== Contents of test case:

    bind .t.e <Key> {set x "%M"}
    bind Entry <Key> {set y "%M"}
    bind all <Key> {set z "%M"}
    set x none; set y none; set z none
    event gen .t.e <Key-a>
    list $x $y $z

---- Result was:
none none 0
---- Result should have been (exact matching):
0 1 2
==== bind-16.45 FAILED



==== bind-16.46 ExpandPercents procedure FAILED
==== Contents of test case:

    bind all <Key> {set z "%M"}
    bind Entry <Key> {set y "%M"}
    bind .t.e <Key> {set x "%M"}
    set x none; set y none; set z none
    event gen .t.e <Key-a>
    list $x $y $z

---- Result was:
none none 0
---- Result should have been (exact matching):
0 1 2
==== bind-16.46 FAILED



==== bind-22.10 HandleEventGenerate FAILED
==== Contents of test case:

    bind .t.f <Key> {set x "%s %K"}
    event generate .t.f <Control-Key-space>
    set x

---- Result was:

---- Result should have been (exact matching):
4 space
==== bind-22.10 FAILED



==== bind-22.46 HandleEventGenerate: options <Key> -keycode 20 FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %k"
    event generate .t.f <Key> -keycode 20
    return $x

---- Result was:

---- Result should have been (exact matching):
20
==== bind-22.46 FAILED



==== bind-22.49 HandleEventGenerate: options <Key> -keysym space FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %K"
    event generate .t.f <Key> -keysym space
    return $x

---- Result was:

---- Result should have been (exact matching):
space
==== bind-22.49 FAILED



==== bind-22.64 HandleEventGenerate: options <Key> -root .t FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %R"
    event generate .t.f <Key> -root .t 
    expr {[winfo id .t] eq $x}

---- Result was:
0
---- Result should have been (exact matching):
1
==== bind-22.64 FAILED



==== bind-22.66 HandleEventGenerate: options <Key> -root [winfo id .t] FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %R"
    event generate .t.f <Key> -root [winfo id .t] 
    expr {[winfo id .t] eq $x}

---- Result was:
0
---- Result should have been (exact matching):
1
==== bind-22.66 FAILED



==== bind-22.74 HandleEventGenerate: options <Key> -rootx 2i FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %X"
    event generate .t.f <Key> -rootx 2i 
    expr {[winfo pixels .t.f 2i] eq $x}

---- Result was:
0
---- Result should have been (exact matching):
1
==== bind-22.74 FAILED



==== bind-22.82 HandleEventGenerate: options <Key> -rooty 2i FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %Y"
    event generate .t.f <Key> -rooty 2i 
    expr {[winfo pixels .t.f 2i] eq $x}

---- Result was:
0
---- Result should have been (exact matching):
1
==== bind-22.82 FAILED



==== bind-22.90 HandleEventGenerate: options <Key> -sendevent 1 FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %E"
    event generate .t.f <Key> -sendevent 1 
    return $x

---- Result was:

---- Result should have been (exact matching):
1
==== bind-22.90 FAILED



==== bind-22.91 HandleEventGenerate: options <Key> -sendevent yes FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %E"
    event generate .t.f <Key> -sendevent yes 
    return $x

---- Result was:

---- Result should have been (exact matching):
1
==== bind-22.91 FAILED



==== bind-22.92 HandleEventGenerate: options <Key> -sendevent 43 FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %E"
    event generate .t.f <Key> -sendevent 43 
    return $x

---- Result was:

---- Result should have been (exact matching):
1
==== bind-22.92 FAILED



==== bind-22.94 HandleEventGenerate: options <Key> -serial 100 FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %#"
    event generate .t.f <Key> -serial 100 
    return $x

---- Result was:

---- Result should have been (exact matching):
100
==== bind-22.94 FAILED



==== bind-22.96 HandleEventGenerate: options <Key> -state 1 FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %s"
    event generate .t.f <Key> -state 1 
    return $x

---- Result was:

---- Result should have been (exact matching):
1
==== bind-22.96 FAILED



==== bind-22.106 HandleEventGenerate: options <Key> -subwindow .t FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %S"
    event generate .t.f <Key> -subwindow .t 
    expr {[winfo id .t] eq $x}

---- Result was:
0
---- Result should have been (exact matching):
1
==== bind-22.106 FAILED



==== bind-22.108 HandleEventGenerate: options <Key> -subwindow [winfo id .t] FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %S"
    event generate .t.f <Key> -subwindow [winfo id .t] 
    expr {[winfo id .t] eq $x}

---- Result was:
0
---- Result should have been (exact matching):
1
==== bind-22.108 FAILED



==== bind-22.116 HandleEventGenerate: options <Key> -time 100 FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %t"
    event generate .t.f <Key> -time 100 
    return $x

---- Result was:

---- Result should have been (exact matching):
100
==== bind-22.116 FAILED



==== bind-22.140 HandleEventGenerate: options <Key> -x 2i FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %x"
    event generate .t.f <Key> -x 2i 
    expr {[winfo pixels .t.f 2i] eq $x}

---- Result was:
0
---- Result should have been (exact matching):
1
==== bind-22.140 FAILED



==== bind-22.152 HandleEventGenerate: options <Key> -y 2i FAILED
==== Contents of test case:

    bind .t.f <Key> "lappend x %y"
    event generate .t.f <Key> -y 2i 
    expr {[winfo pixels .t.f 2i] eq $x}

---- Result was:
0
---- Result should have been (exact matching):
1
==== bind-22.152 FAILED



==== bind-26.12 event names: Key FAILED
==== Contents of test case:

    bind .t.f <Key> "set x {event Key}"
    set x xyzzy
    event generate .t.f <Key>
    list $x [bind .t.f]

---- Result was:
xyzzy <Key>
---- Result should have been (exact matching):
{event Key} <Key>
==== bind-26.12 FAILED



==== bind-26.13 event names: KeyPress FAILED
==== Contents of test case:

    bind .t.f <KeyPress> "set x {event KeyPress}"
    set x xyzzy
    event generate .t.f <KeyPress>
    list $x [bind .t.f]

---- Result was:
xyzzy <Key>
---- Result should have been (exact matching):
{event KeyPress} <Key>
==== bind-26.13 FAILED



==== bind-26.14 event names: KeyRelease FAILED
==== Contents of test case:

    bind .t.f <KeyRelease> "set x {event KeyRelease}"
    set x xyzzy
    event generate .t.f <KeyRelease>
    list $x [bind .t.f]

---- Result was:
xyzzy <KeyRelease>
---- Result should have been (exact matching):
{event KeyRelease} <KeyRelease>
==== bind-26.14 FAILED



==== bind-28.5 keysym names FAILED
==== Contents of test case:

    bind .t.f <Key-colon> "lappend x \"keysym received\""
    bind .t.f <Key-underscore> "lappend x {bad binding match}"
    set x [lsort [bind .t.f]]
    event generate .t.f <Key-colon> ;# -state 0
    set x

---- Result was:
: _
---- Result should have been (exact matching):
: _ {keysym received}
==== bind-28.5 FAILED



==== bind-28.6 keysym names FAILED
==== Contents of test case:

    bind .t.f <Key-Return> "lappend x \"keysym Return\""
    bind .t.f <Key-x> "lappend x {bad binding match}"
    set x [lsort [bind .t.f]]
    event generate .t.f <Key-Return> -state 0
    set x

---- Result was:
<Key-Return> x
---- Result should have been (exact matching):
<Key-Return> x {keysym Return}
==== bind-28.6 FAILED



==== bind-28.7 keysym names FAILED
==== Contents of test case:

    bind .t.f <Key-X> "lappend x \"keysym X\""
    bind .t.f <Key-x> "lappend x {bad binding match}"
    set x [lsort [bind .t.f]]
    event generate .t.f <Key-X> -state 1
    set x

---- Result was:
X x
---- Result should have been (exact matching):
X x {keysym X}
==== bind-28.7 FAILED



==== bind-28.8 keysym names FAILED
==== Contents of test case:

    bind .t.f <Key-X> "lappend x \"keysym X\""
    bind .t.f <Key-x> "lappend x {bad binding match}"
    set x [lsort [bind .t.f]]
    event generate .t.f <Key-X> -state 1
    set x

---- Result was:
X x
---- Result should have been (exact matching):
X x {keysym X}
==== bind-28.8 FAILED



==== bind-32.3 should trigger best match of modifier states FAILED
==== Contents of test case:

    bind .t.f <Alt-Control-Key-A> { lappend x "Alt-Control" }
    bind .t.f <Shift-Control-Key-A> { lappend x "Shift-Control" }
    bind .t.f <Shift-Key-A> { lappend x "Shift" }
    event generate .t.f <Alt-Control-Key-A>
    set x

---- Result was:

---- Result should have been (exact matching):
Shift-Control
==== bind-32.3 FAILED



==== bind-32.7 test sequences FAILED
==== Contents of test case:

    bind .t.f <Double-1> { lappend x "Double" }
    bind .t.f <1><1><a> { lappend x "11" }
    event generate .t.f <1>
    event generate .t.f <1>
    event generate .t.f <a>
    set x

---- Result was:
Double
---- Result should have been (exact matching):
Double 11
==== bind-32.7 FAILED



==== bind-32.8 test sequences FAILED
==== Contents of test case:

    bind .t.f <a><1><Double-1><1><a> { lappend x "Double" }
    event generate .t.f <a>
    event generate .t.f <1>
    event generate .t.f <1>
    event generate .t.f <1>
    event generate .t.f <1>
    event generate .t.f <a>
    set x

---- Result was:

---- Result should have been (exact matching):
Double
==== bind-32.8 FAILED



==== bind-33.1 prefer longest match FAILED
==== Contents of test case:

    bind .t.f <a><1><1> { lappend x "a11" }
    bind .t.f <Double-1> { lappend x "Double" }
    event generate .t.f <a>
    event generate .t.f <1>
    event generate .t.f <1>
    set x

---- Result was:
Double
---- Result should have been (exact matching):
a11
==== bind-33.1 FAILED



==== bind-33.3 should prefer more specialized event FAILED
==== Contents of test case:

    bind .t.f <a><Double-1><a> { lappend x "Double" }
    bind .t.f <a><1><1><a> { lappend x "11" }
    event generate .t.f <a>
    event generate .t.f <1>
    event generate .t.f <1>
    event generate .t.f <a>
    set x

---- Result was:

---- Result should have been (exact matching):
11
==== bind-33.3 FAILED



==== bind-33.6 pefer most specialized FAILED
==== Contents of test case:

    bind .t.f <a><1><1><1><1><a> { lappend x "1111" }
    bind .t.f <a><ButtonPress><Double-ButtonPress><ButtonPress><a> { lappend x "Any-Double-Any" }
    event generate .t.f <a>
    event generate .t.f <1>
    event generate .t.f <1>
    event generate .t.f <1>
    event generate .t.f <1>
    event generate .t.f <a>
    set x

---- Result was:

---- Result should have been (exact matching):
1111
==== bind-33.6 FAILED



==== bind-33.7 pefer most specialized FAILED
==== Contents of test case:

    bind .t.f <ButtonPress-1><a> { lappend x "1" }
    bind .t.f <ButtonPress><a> { lappend x "Any" }
    event generate .t.f <1>
    event generate .t.f <a>
    set x

---- Result was:

---- Result should have been (exact matching):
1
==== bind-33.7 FAILED



==== bind-33.8 pefer most specialized FAILED
==== Contents of test case:

    bind .t.f <Double-ButtonPress-1><a> { lappend x "1" }
    bind .t.f <ButtonPress><ButtonPress><a> { lappend x "Any" }
    event generate .t.f <1>
    event generate .t.f <1>
    event generate .t.f <a>
    set x

---- Result was:

---- Result should have been (exact matching):
1
==== bind-33.8 FAILED

bind.test:      Total   511     Passed  452     Skipped 3       Failed  56
Number of tests skipped for each constraint:
        3       nonPortable
==1819== 
==1819== HEAP SUMMARY:
==1819==     in use at exit: 4,533,445 bytes in 3,594 blocks
==1819==   total heap usage: 52,094 allocs, 48,500 frees, 18,459,845 bytes allocated
==1819== 
==1819== LEAK SUMMARY:
==1819==    definitely lost: 792 bytes in 3 blocks
==1819==    indirectly lost: 32 bytes in 1 blocks
==1819==      possibly lost: 3,657,750 bytes in 198 blocks
==1819==    still reachable: 874,871 bytes in 3,392 blocks
==1819==         suppressed: 0 bytes in 0 blocks
==1819== Rerun with --leak-check=full to see details of leaked memory
==1819== 
==1819== For counts of detected and suppressed errors, rerun with: -v
==1819== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
francois@TM:~/Documents/tcltk/fossil/tk/unix$