From: Zoran V. <zv...@ar...> - 2005-04-09 14:36:54
|
Am 04.04.2005 um 03:16 schrieb Stephen Deasey: > I haven't figured this out yet :-( > It's probably going to be next week before I can take another look. > > Hmmm... just went on Purify trip and unfortunately no cigar. But... I was experimenting somehow, and looking parallel into some of our code and Tcl's code about obj handling. There are two places I found: RCS file: /cvsroot/naviserver/naviserver/nsd/tclobj.c,v retrieving revision 1.2 diff -r1.2 tclobj.c 123c123 < (typePtr->freeIntRepProc)(objPtr); --- > (*typePtr->freeIntRepProc)(objPtr); I wonder how this *ever* worked before? I doubt that anybody seriously used that. Another thing: I do not think you should free the string rep of the object by just calling the Tcl_ConvertToType (which eventually calls SetSpecFromAny()). I modified the SetSpecFromAny() to skip forcefully invalidating the string rep and now it works. Also, in FreeSpecObj, it is necessary to zero-out the ptr1/ptr2 after freeing them since this will bring up the real problem sooner on the surface. Besides, it is also cleaner. I've checked those changes. Please have a look and see if this is OK for you. Zoran |