diff options
| author | dgp@users.sourceforge.net <dgp> | 2011-06-21 14:10:30 (GMT) |
|---|---|---|
| committer | dgp@users.sourceforge.net <dgp> | 2011-06-21 14:10:30 (GMT) |
| commit | 4b398595385783b201418a940042b74f97cf6350 (patch) | |
| tree | ddeb1ed2f06be006375b0c9ceffd930f1f5c8b45 /generic/tclLink.c | |
| parent | 117da3247be1313096cebf07414d827c851bdc68 (diff) | |
| parent | 0b5e9abac787849ed9da7358ac6588b55d0ad4d6 (diff) | |
| download | tcl-4b398595385783b201418a940042b74f97cf6350.zip tcl-4b398595385783b201418a940042b74f97cf6350.tar.gz tcl-4b398595385783b201418a940042b74f97cf6350.tar.bz2 | |
3317466 Prevent multiple Tcl_LinkVar() links to a single Tcl variable.
Diffstat (limited to 'generic/tclLink.c')
| -rw-r--r-- | generic/tclLink.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/generic/tclLink.c b/generic/tclLink.c index 00010f3..a3b42bd 100644 --- a/generic/tclLink.c +++ b/generic/tclLink.c @@ -112,6 +112,14 @@ Tcl_LinkVar( Link *linkPtr; int code; + linkPtr = (Link *) Tcl_VarTraceInfo(interp, varName, TCL_GLOBAL_ONLY, + LinkTraceProc, (ClientData) NULL); + if (linkPtr != NULL) { + Tcl_SetObjResult(interp, Tcl_ObjPrintf( + "variable '%s' is already linked", varName)); + return TCL_ERROR; + } + linkPtr = ckalloc(sizeof(Link)); linkPtr->interp = interp; linkPtr->varName = Tcl_NewStringObj(varName, -1); |
