--- Tcl.h.orig Sat Mar 16 13:14:34 1996 +++ Tcl.h Tue Dec 17 14:39:45 1996 @@ -53,7 +53,8 @@ inline int dark() const { return (tcl_ == 0); } inline Tcl_Interp* interp() const { return (tcl_); } inline char* result() const { return (tcl_->result); } - inline void result(const char* p) { tcl_->result = (char*)p; } + inline void result(const char* p, Tcl_FreeProc* freeProc = TCL_STATIC) + { Tcl_SetResult(tcl_, (char *)p, freeProc); } void resultf(const char* fmt, ...); inline void CreateCommand(const char* cmd, Tcl_CmdProc* cproc, ClientData cd = 0, --- source.cc.orig Thu Apr 4 07:05:45 1996 +++ source.cc Tue Dec 17 14:38:44 1996 @@ -251,8 +251,7 @@ return (TCL_OK); } if (strcmp(argv[1], "addr") == 0) { - strcpy(wrk, InetNtoa(addr_)); - tcl.result(wrk); + tcl.result(InetNtoa(addr_), TCL_DYNAMIC); return (TCL_OK); } if (strcmp(argv[1], "srcid") == 0) { --- Tcl.cc.orig Tue Apr 2 20:53:27 1996 +++ Tcl.cc Tue Dec 17 15:45:30 1996 @@ -162,6 +162,8 @@ Tcl& tcl = Tcl::instance(); if (!tcl.dark()) tcl.DeleteCommand(name_); + if (name_ != 0) + delete name_; TclObject** p; for (p = &all_; *p != this; p = &(*p)->next_) ; @@ -197,8 +199,9 @@ void TclObject::setproc(const char* s) { Tcl& tcl = Tcl::instance(); - if (name_ != 0 && !tcl.dark()) { - tcl.DeleteCommand(name_); + if (name_ != 0) { + if (!tcl.dark()) + tcl.DeleteCommand(name_); delete name_; } int n = strlen(s); --- sitebox.cc.orig 1997/01/07 22:48:27 +++ sitebox.cc 1997/01/07 23:27:35 @@ -228,6 +228,10 @@ Site::~Site() { + if (text_) + delete text_; + if (tag_) + delete tag_; } int Site::command(int argc, const char*const* argv)