View · Search · Index
No registered users in community xowiki
in last 10 minutes

Re: [Xotcl] XOTcl1.5.6 and Tcl8.5b1

From: Gustaf Neumann <neumann_at_wu-wien.ac.at>
Date: Mon, 29 Oct 2007 22:00:07 +0100

> Murr, Florian schrieb:
>
>> Dear XOTcl-guys!
>> I tried to upgrade from Tcl8.4+XOTcl1.5.3 (all my projects worked fine
>> here!) to Tcl8.5b1, but my projects won't run due to some XOTcl
>> problems.
>> The following snippet is extracted from my project and I tested it with
>> XOTcl1.5.5 (from WinTclTk) and XOTcl1.5.6 from ActiveState-Teacup.
>> But both failed with the same error message.
>> My guess: Non-positional Arguments don't work!
>>
>>

Dear all,

not sure if this helps immediately, since your are refering to binary
distros, but however, below is the fix to the problem. Tcl 8.5 seems
much more agressive in sharing variables. The variable was set,
but lost later, maybe due to shimmering. Switching back to the
more conservative approach helps. The change will be included
in the next xotcl release.

best regards
-gustaf neumann


--- generic/xotcl.c~ 2007-10-09 20:44:45.000000000 +0200
+++ generic/xotcl.c 2007-10-29 21:48:13.000000000 +0100
_at_@ -11438,9 +11438,9 @@
     r1 = Tcl_ListObjGetElements(in, nonposArgsDefv[i], &npac, &npav);
     if (r1 == TCL_OK) {
       if (npac == 3) {
- Tcl_ObjSetVar2(in, npav[0], NULL, npav[2], 0);
+ Tcl_SetVar2Ex(in, ObjStr(npav[0]), NULL, npav[2], 0);
       } else if (npac == 2 && !strcmp(ObjStr(npav[1]), "switch")) {
- Tcl_ObjSetVar2(in, npav[0], NULL, Tcl_NewBooleanObj(0), 0);
+ Tcl_SetVar2Ex(in, ObjStr(npav[0]), NULL, Tcl_NewBooleanObj(0), 0);
       }
     }
   }