X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-tcl.git;a=blobdiff_plain;f=base%2Fscriptinv.c;h=cdaec8b3011af0f8610623b75a9b687932483df0;hp=1ac7e82ea14967943949bdf7f21f42aa2d236394;hb=9547c7ba84dfcccaa3ff7032ddeb698e163ad81d;hpb=b6773fb0fec2b958ae6be3e1cd0f108eab06d562 diff --git a/base/scriptinv.c b/base/scriptinv.c index 1ac7e82..cdaec8b 100644 --- a/base/scriptinv.c +++ b/base/scriptinv.c @@ -16,7 +16,7 @@ void scriptinv_cancel(ScriptToInvoke *si) { int scriptinv_set(ScriptToInvoke *si, Tcl_Interp *ip, Tcl_Obj *newscript, Tcl_Obj *xargs) { - int rc; + int rc, xlength; scriptinv_cancel(si); @@ -24,8 +24,9 @@ int scriptinv_set(ScriptToInvoke *si, Tcl_Interp *ip, Tcl_IncrRefCount(newscript); if (xargs) { - rc= Tcl_ListObjLength(ip, xargs, &si->llength); if (rc) return rc; + rc= Tcl_ListObjLength(ip, xargs, &xlength); if (rc) return rc; Tcl_IncrRefCount(xargs); + si->llength += xlength; } si->obj= newscript; @@ -41,6 +42,7 @@ void scriptinv_invoke(ScriptToInvoke *si, int argc, Tcl_Obj **argv) { assert(si->obj); for (i=0; iobj); Tcl_IncrRefCount(invoke);