From: <no...@so...> - 2000-11-24 13:29:35
|
Bug #119191, was updated on 2000-Oct-25 22:03 Here is a current snapshot of the bug. Project: Tcl Category: Commands Status: Open Resolution: None Bug Group: 8.0.5 Priority: 5 Summary: return in after script causes bogus bgerror Details: OriginalBugID: 2577 Bug Version: 8.0.5 SubmitDate: '1999-08-18' LastModified: '2000-04-03' Severity: SER Status: Assigned Submitter: techsupp ChangedBy: hobbs RelatedBugIDs: 3998 750 OS: Solaris OSVersion: 2.5.1 Machine: Other FixedDate: '2000-10-25' ClosedDate: '2000-10-25' Name: Tedd Hadley Comments: The reason for the error seems to be code in tclTimer.c AfterProc: result = afterPtr->command); if (result != TCL_OK) { Tcl_AddErrorInfo(interp, "\n (\"after\" script)"); Tcl_BackgroundError(interp); } Tcl_GlobalEval can, of course, return a value other than TCL_OK without it being TCL_ERROR -- TCL_RETURN in this case. I patched my version by changing the condition to if(result == TCL_ERROR). This may or may not be the right fix... ReproducibleScript: after 0 { return } update ObservedBehavior: return in an after script causes a fake error. DesiredBehavior: No error expected wish4.2 didn't complain, but 8.0+ does. -- 04/03/2000 hobbs Follow-Ups: Date: 2000-Nov-13 05:50 By: dkf Comment: Return at the global level (which is where after scripts are executed) should always cause an error. ------------------------------------------------------- Date: 2000-Nov-13 13:53 By: dgp Comment: I disagree that [return] should throw an error at level #0. That's not what the docs say. From return(n): ... DESCRIPTION Return immediately from the current procedure (or top-level command or source command), with string as the return value. ... [return] has behaved this way at least as long as I've used Tcl (since Tcl 7.4), and I've seen plenty of code that depends on this behavior. Notably the use of [return] to exit a pkgIndex.tcl file before the end of file is quite useful. ------------------------------------------------------- Date: 2000-Nov-24 05:24 By: dkf Comment: And if the [return] *is* the current top-level command? In that case, I read the description as being functionally equivalent to something that just has a result of the given string (like [format %s $string] for example.) IMHO, what [return] does is make the current context terminate with the given message/code/errorInfo/errorCode. But what this means at the top-level is a little unclear to me. ------------------------------------------------------- For detailed info, follow this link: http://sourceforge.net/bugs/?func=detailbug&bug_id=119191&group_id=10894 |