diff options
| author | nijtmans@users.sourceforge.net <jan.nijtmans> | 2013-01-03 09:46:57 (GMT) |
|---|---|---|
| committer | nijtmans@users.sourceforge.net <jan.nijtmans> | 2013-01-03 09:46:57 (GMT) |
| commit | 1aadee4441bc13b5b4c2d6c4fea564d91282f15c (patch) | |
| tree | 16df47ff0c9462b72d6c4f1a1094e4ed9b149948 /generic | |
| parent | 72a0c22658e03f3c3addfcac620f998859b08ee7 (diff) | |
| parent | c6b82cb34b585579c8434e6d9954ddd8304686fc (diff) | |
| download | tcl-1aadee4441bc13b5b4c2d6c4fea564d91282f15c.zip tcl-1aadee4441bc13b5b4c2d6c4fea564d91282f15c.tar.gz tcl-1aadee4441bc13b5b4c2d6c4fea564d91282f15c.tar.bz2 | |
test case for bug-3598580: Tcl_ListObjReplace may release deleted elements too early
Diffstat (limited to 'generic')
| -rw-r--r-- | generic/tclTestObj.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/generic/tclTestObj.c b/generic/tclTestObj.c index 7494beb..4bddc42 100644 --- a/generic/tclTestObj.c +++ b/generic/tclTestObj.c @@ -963,6 +963,17 @@ TestobjCmd( } SetVarToObj(varPtr, destIndex, varPtr[varIndex]); Tcl_SetObjResult(interp, varPtr[destIndex]); + } else if (strcmp(subCmd, "bug3598580") == 0) { + Tcl_Obj *listObjPtr, *elemObjPtr; + if (objc != 2) { + goto wrongNumArgs; + } + elemObjPtr = Tcl_NewIntObj(123); + listObjPtr = Tcl_NewListObj(1, &elemObjPtr); + /* Replace the single list element through itself, nonsense but legal. */ + Tcl_ListObjReplace(interp, listObjPtr, 0, 1, 1, &elemObjPtr); + Tcl_SetObjResult(interp, listObjPtr); + return TCL_OK; } else if (strcmp(subCmd, "convert") == 0) { const char *typeName; |
