"KL" == Kristoffer Lawson setok@fishpool.com writes:
KL> [~] package require XOTcl KL> 0.83 KL> [~] Class Foo KL> [~] Foo instproc init {} { Bar [self] } KL> [~] Foo instproc destroy {} { puts rm }
KL> [~] Class Bar KL> [~] Bar instproc init {blah} {}
KL> [~] Foo ob KL> rm KL> no value given for parameter "blah" to "init" KL> while evaluating {Foo ob} KL> [~] Foo uh KL> rm KL> Segmentation fault
KL> The "Bar [self]" line was actually a bug in my own code (oops, forgot KL> "new"), but it's interesting to note that it resulted in a segmentation KL> fault.
just to paraphrase the code: during the constructor of Foo, you created a new object of class Bar with the name of the instance of Foo. when you create a new command with the same name, the "old" object is deleted, and the constructor for the new command is called. but the constructor for the new object is called incorrectly, since the parameter "blah" was not provided.
During the output of the error message, XOTcl tries to provide the backtrace (callstack), but it this case it contains a command from an non-existing object.
on my system, i do not get an segfault, but an output containing freed memory. if you remove the "blah" argument from the constructor of Bar, i would expect a graceful behavior on your system as well.
If you are interested, i could send you a quick fix for the problem. However, I experimented with the problem, you are addressing, and found another related problem, for which i have no fix yet....
-gustaf