chiark
/
gitweb
/
~ian
/
chiark-tcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
put xargs in right place
[chiark-tcl.git]
/
base
/
scriptinv.c
diff --git
a/base/scriptinv.c
b/base/scriptinv.c
index 1ac7e82ea14967943949bdf7f21f42aa2d236394..cdaec8b3011af0f8610623b75a9b687932483df0 100644
(file)
--- 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 scriptinv_set(ScriptToInvoke *si, Tcl_Interp *ip,
Tcl_Obj *newscript, Tcl_Obj *xargs) {
- int rc;
+ int rc
, xlength
;
scriptinv_cancel(si);
scriptinv_cancel(si);
@@
-24,8
+24,9
@@
int scriptinv_set(ScriptToInvoke *si, Tcl_Interp *ip,
Tcl_IncrRefCount(newscript);
if (xargs) {
Tcl_IncrRefCount(newscript);
if (xargs) {
- rc= Tcl_ListObjLength(ip, xargs, &
si->l
length); if (rc) return rc;
+ rc= Tcl_ListObjLength(ip, xargs, &
x
length); if (rc) return rc;
Tcl_IncrRefCount(xargs);
Tcl_IncrRefCount(xargs);
+ si->llength += xlength;
}
si->obj= newscript;
}
si->obj= newscript;
@@
-41,6
+42,7
@@
void scriptinv_invoke(ScriptToInvoke *si, int argc, Tcl_Obj **argv) {
assert(si->obj);
for (i=0; i<argc; i++) Tcl_IncrRefCount(argv[i]);
assert(si->obj);
for (i=0; i<argc; i++) Tcl_IncrRefCount(argv[i]);
+
invoke= Tcl_DuplicateObj(si->obj);
Tcl_IncrRefCount(invoke);
invoke= Tcl_DuplicateObj(si->obj);
Tcl_IncrRefCount(invoke);