diff options
-rw-r--r-- | generic/tkMenu.c | 5 | ||||
-rw-r--r-- | tests/menu.test | 46 |
2 files changed, 49 insertions, 2 deletions
diff --git a/generic/tkMenu.c b/generic/tkMenu.c index 6f75aca..ff1148d 100644 --- a/generic/tkMenu.c +++ b/generic/tkMenu.c @@ -3036,10 +3036,13 @@ GetIndexFromCoords( x = y; p = end + 1; y = strtol(p, &end, 0); - if (end == p) { + if ((end == p) || (*end != '\0')) { goto error; } } else { + if (*end != '\0') { + goto error; + } x = borderwidth; } diff --git a/tests/menu.test b/tests/menu.test index 4f28fbb..2ab4aaa 100644 --- a/tests/menu.test +++ b/tests/menu.test @@ -3487,8 +3487,52 @@ test menu-22.5 {GetIndexFromCoords: mapped wide window} -setup { } -cleanup { deleteWindows } -result 0 +test menu-22.6 {GetIndexFromCoords: syntax error in @x,y indices} -setup { + deleteWindows +} -body { + menu .m + .m add command -label "First entry" + .m add command -label "Second entry" + .m add command -label "Last entry" + .m index @4bogus +} -cleanup { + deleteWindows +} -returnCodes error -result {bad menu entry index "@4bogus"} +test menu-22.7 {GetIndexFromCoords: syntax error in @x,y indices} -setup { + deleteWindows +} -body { + menu .m + .m add command -label "First entry" + .m add command -label "Second entry" + .m add command -label "Last entry" + .m index @10,4bogus +} -cleanup { + deleteWindows +} -returnCodes error -result {bad menu entry index "@10,4bogus"} +test menu-22.8 {GetIndexFromCoords: syntax error in @x,y indices} -setup { + deleteWindows +} -body { + menu .m + .m add command -label "First entry" + .m add command -label "Second entry" + .m add command -label "Last entry" + .m index @10,bogus +} -cleanup { + deleteWindows +} -returnCodes error -result {bad menu entry index "@10,bogus"} +test menu-22.9 {GetIndexFromCoords: index type pecedence} -setup { + deleteWindows +} -body { + menu .m -tearoff 0 + .m add command -label "First entry" + .m add command -label "@42nd street" + .m add command -label "Last entry" + .m index "@42nd*" ; # shall be interpreted as a pattern, not as @42 +} -cleanup { + deleteWindows +} -result {1} -test menu-22.6 {tk_popup on separator entry} -setup { +test menu-22.10 {tk_popup on separator entry} -setup { deleteWindows } -constraints {x11} -body { menu .m1 |