diff options
author | ferrieux <ferrieux@users.sourceforge.net> | 2011-08-09 17:01:16 (GMT) |
---|---|---|
committer | ferrieux <ferrieux@users.sourceforge.net> | 2011-08-09 17:01:16 (GMT) |
commit | 653f52ba6008466571d283d523272ae22c2cf2c4 (patch) | |
tree | 07db51e401be8d97cacd6e665d64e168ebc4802a /generic/tclResult.c | |
parent | 7884058a52af8573e05691c2e1e40fdfa78ab5db (diff) | |
download | tcl-653f52ba6008466571d283d523272ae22c2cf2c4.zip tcl-653f52ba6008466571d283d523272ae22c2cf2c4.tar.gz tcl-653f52ba6008466571d283d523272ae22c2cf2c4.tar.bz2 |
[Bug 3386417] avoid a reference loop between the bytecode and its companion errostack when compiling a syntax error.
Diffstat (limited to 'generic/tclResult.c')
-rw-r--r-- | generic/tclResult.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/generic/tclResult.c b/generic/tclResult.c index 60bae73..4443cc1 100644 --- a/generic/tclResult.c +++ b/generic/tclResult.c @@ -1599,6 +1599,29 @@ Tcl_GetReturnOptions( /* *------------------------------------------------------------------------- * + * TclNoErrorStack -- + * + * Removes the -errorstack entry from an options dict to avoid reference cycles + * + * Results: + * The (unshared) argument options dict, modified in -place. + * + *------------------------------------------------------------------------- + */ + +Tcl_Obj * +TclNoErrorStack(Tcl_Interp *interp, Tcl_Obj *options) +{ + Tcl_Obj **keys = GetKeys(); + + Tcl_DictObjRemove(interp, options, keys[KEY_ERRORSTACK]); + + return options; +} + +/* + *------------------------------------------------------------------------- + * * Tcl_SetReturnOptions -- * * Accepts an interp and a dictionary of return options, and sets the |