In message <[EMAIL PROTECTED]>
          Jon Burgess <[EMAIL PROTECTED]> wrote:

> On Sat, 2007-05-26 at 10:52 +0100, Tom Hughes wrote:
>
> > In message <[EMAIL PROTECTED]>
> >           [EMAIL PROTECTED] (Jon Burgess) wrote:
> > 
> > It is worse than that though, because if the node which the
> > attribute is attached to is freed then the attribute will be
> > freed (even if there are other references to it) and there is
> > no easy way to find out which attributes need to be kept.
> > 
> > I guess you would have to walk the entire node tree checking
> > the _private reference count of each attribute and unlinking
> > anything that is shared before freeing the node?
> 
> I'm only just starting to get my head around the interaction between C
> and the ruby objects and GC. The patch below seems to be a simple fix
> but I'm by no means certain this fixes the more general problems.
> 
> I think it works because the GC implicitly performs the reference
> checking for the case you mention.

Nope. As soon as I fixed the memory leak mentioned in my other
thread (which is behind at least some of the OpenStreetMap memory
leak issue that I assume we're both looking at) I started getting
crashes because the node tree was being free leaving orphaned
ruby attribute objects that pointed at libxml attribute objects
that had been deleted.

I'm working on a plan at the moment, but it currently involves
reworking the whole basis of how nodes and attributes are managed...

Tom

-- 
Tom Hughes ([EMAIL PROTECTED])
http://www.compton.nu/
_______________________________________________
libxml-devel mailing list
libxml-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/libxml-devel

Reply via email to