#4507 Tk's safe.test broken by Safe Base rewrite

obsolete: 8.5.8
Don Porter

Something in the recent changes to "Safe Base"
has totally broken the safe.test tests in Tk. First
test failure looks like:

==== safe-1.1 Safe Tk loading into an interpreter FAILED
==== Contents of test case:

catch {safe::interpDelete a}
safe::loadTk [safe::interpCreate a]
safe::interpDelete a
set x {}
set x

---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- errorInfo: script error
invoked from within
"source {$p(:0:)/auto.tcl}"
(in namespace eval "::" script line 1)
invoked from within
"namespace eval :: $auto_index($name)"
(procedure "auto_load" line 35)
invoked from within
"auto_load $name [uplevel 1 {::namespace current}]"
(autoloading "tcl_findLibrary")
(procedure "::unknown" line 30)
invoked from within
"tcl_findLibrary tk $tk_version $tk_patchLevel tk.tcl TK_LIBRARY tk_library"
(procedure "tkInit" line 4)
invoked from within
invoked from within
"load {} Tk $slave"
(procedure "safe::loadTk" line 63)
invoked from within
"safe::loadTk [safe::interpCreate a]"
("uplevel" body line 3)
invoked from within
"uplevel 1 $script"
---- errorCode: NONE
==== safe-1.1 FAILED

and 13 more failures like that follow.


  • Don Porter
    Don Porter

    depending how this gets fixed, there may be
    to document for other users of the Safe Base,
    and the decision to back port for 8.5.9 might
    need reconsidering.

  • The irritating thing is that the real error message was logged, but not logged by the test. Can't tell what's wrong behind that "script error" without it.

    • assigned_to: hobbs --> dkf
  • OK, by poking around I've found that the 'problem' was that auto.tcl ends with a [return] instead of just falling off the end. Should now work on both 8.5 branch and HEAD (I've added an explicit test for the problem case).

    • status: open --> closed-fixed