diff options
Diffstat (limited to 'generic/tclCmdIL.c')
| -rw-r--r-- | generic/tclCmdIL.c | 46 |
1 files changed, 15 insertions, 31 deletions
diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index 663d962..aed9a85 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -2315,8 +2315,8 @@ Tcl_LassignObjCmd( return TCL_ERROR; } - listCopyPtr = TclDuplicatePureObj(interp, objv[1], &tclListType); - if (!listCopyPtr) { + listCopyPtr = TclListObjCopy(interp, objv[1]); + if (listCopyPtr == NULL) { return TCL_ERROR; } Tcl_IncrRefCount(listCopyPtr); /* Important! fs */ @@ -2485,10 +2485,7 @@ Tcl_LinsertObjCmd( listPtr = objv[1]; if (Tcl_IsShared(listPtr)) { - listPtr = TclDuplicatePureObj(interp, listPtr, &tclListType); - if (!listPtr) { - return TCL_ERROR; - } + listPtr = TclListObjCopy(NULL, listPtr); copied = 1; } @@ -2690,10 +2687,7 @@ Tcl_LpopObjCmd( if (objc == 2) { if (Tcl_IsShared(listPtr)) { - listPtr = TclDuplicatePureObj(interp, listPtr, &tclListType); - if (!listPtr) { - return TCL_ERROR; - } + listPtr = TclListObjCopy(NULL, listPtr); copied = 1; } result = Tcl_ListObjReplace(interp, listPtr, listLen - 1, 1, 0, NULL); @@ -2883,11 +2877,7 @@ Tcl_LremoveObjCmd( */ if (Tcl_IsShared(listObj)) { - listObj = TclDuplicatePureObj(interp, listObj, &tclListType); - if (!listObj) { - status = TCL_ERROR; - goto done; - } + listObj = TclListObjCopy(NULL, listObj); copied = 1; } num = 0; @@ -3139,10 +3129,7 @@ Tcl_LreplaceObjCmd( listPtr = objv[1]; if (Tcl_IsShared(listPtr)) { - listPtr = TclDuplicatePureObj(interp, listPtr, &tclListType); - if (!listPtr) { - return TCL_ERROR; - } + listPtr = TclListObjCopy(NULL, listPtr); } /* @@ -3754,7 +3741,7 @@ Tcl_LsearchObjCmd( i = (lower + upper)/2; i -= i % groupSize; - Tcl_BumpObj(itemPtr); + Tcl_BounceRefCount(itemPtr); itemPtr = NULL; if (sortInfo.indexc != 0) { @@ -3855,7 +3842,7 @@ Tcl_LsearchObjCmd( } for (i = start; i < listc; i += groupSize) { match = 0; - Tcl_BumpObj(itemPtr); + Tcl_BounceRefCount(itemPtr); itemPtr = NULL; if (sortInfo.indexc != 0) { @@ -3957,7 +3944,7 @@ Tcl_LsearchObjCmd( */ if (returnSubindices && (sortInfo.indexc != 0)) { - Tcl_BumpObj(itemPtr); + Tcl_BounceRefCount(itemPtr); itemPtr = SelectObjFromSublist(listv[i+groupOffset], &sortInfo); Tcl_ListObjAppendElement(interp, listPtr, itemPtr); @@ -3965,7 +3952,7 @@ Tcl_LsearchObjCmd( Tcl_ListObjReplace(interp, listPtr, LIST_MAX, 0, groupSize, &listv[i]); } else { - Tcl_BumpObj(itemPtr); + Tcl_BounceRefCount(itemPtr); itemPtr = listv[i]; Tcl_ListObjAppendElement(interp, listPtr, itemPtr); } @@ -3986,7 +3973,7 @@ Tcl_LsearchObjCmd( } } - Tcl_BumpObj(itemPtr); + Tcl_BounceRefCount(itemPtr); itemPtr = NULL; /* @@ -4037,7 +4024,7 @@ Tcl_LsearchObjCmd( done: /* potential lingering abstract list element */ - Tcl_BumpObj(itemPtr); + Tcl_BounceRefCount(itemPtr); if (startPtr != NULL) { Tcl_DecrRefCount(startPtr); @@ -4775,7 +4762,7 @@ Tcl_LsortObjCmd( * 1675116] */ - listObj = TclDuplicatePureObj(interp ,listObj, &tclListType); + listObj = TclListObjCopy(interp, listObj); if (listObj == NULL) { sortInfo.resultCode = TCL_ERROR; goto done; @@ -5131,10 +5118,7 @@ Tcl_LeditObjCmd( } if (Tcl_IsShared(listPtr)) { - listPtr = TclDuplicatePureObj(interp, listPtr, &tclListType); - if (!listPtr) { - return TCL_ERROR; - } + listPtr = TclListObjCopy(NULL, listPtr); createdNewObj = 1; } else { createdNewObj = 0; @@ -5582,7 +5566,7 @@ SelectObjFromSublist( return NULL; } objPtr = currentObj; - Tcl_BumpObj(lastObj); + Tcl_BounceRefCount(lastObj); lastObj = currentObj; } return objPtr; |
