2009/1/7 Charlie Savage <c...@savagexi.com>: > Hi Joseph, > >>> I'll see if I can put something together, we know it's in the >>> to_solr_doc from acts_as_solr somewhere. >> >> Looks like the problem is in to_s on Node >> >> 10000.times do >> node = XML::Node.new 'node' >> node.to_s >> end > > Nice work - that's a great test case. > > So if I I run this code: > > 10000000.times do > node = XML::Node.new 'node' > #node.to_s > end > > I see no issues. > > Adding the .to_s does seem to cause a problem. Are you actually doing so > many to_s calls in your code? > > Anyway, will have to look and see if there is anything obvious in the part > of the bindings.
Looks like the xmlOutputBufferPtr never gets freed. This might do the trick: Index: ext/libxml/ruby_xml_node.c =================================================================== --- ext/libxml/ruby_xml_node.c (revision 693) +++ ext/libxml/ruby_xml_node.c (working copy) @@ -570,10 +570,16 @@ xmlNodeDumpOutput(output, xnode->doc, xnode, level, indent, encoding); xmlOutputBufferFlush(output); + VALUE string = Qnil; + if (output->conv) - return rb_str_new2((const char*) output->conv->content); + string = rb_str_new2((const char*) output->conv->content); else - return rb_str_new2((const char*) output->buffer->content); + string = rb_str_new2((const char*) output->buffer->content); + + xmlOutputBufferClose(output); + + return string; } -- Aaron Patterson http://tenderlovemaking.com/ _______________________________________________ libxml-devel mailing list libxml-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/libxml-devel