[xml] relax.c changing xmlNode's _private slot



Hi Daniel, All,
while investigating why RelaxNG validation via Perl bindings for libxml2
occasionally result in sigsegv (as reported by Alexei Agafonov on perl-xml mail list), I found the cause to be at relax.c (CVS) around line 9755, where a value is assigned to node->_private, while _private is used by Perl bindings to store some critical binding-specific structures (reference counting etc.). It seems this is the only place where RelaxNG uses _private slot of a xmlNode of the document being validated, and it seems it's only used for some kind of an optimalization. Do you think this part could possibly be rewritten, so that xmlNode's _private slot is preserved within RelaxNG validation?

The problematic lines are:
relaxng.c:9755
if (ret == 0) {
 node->_private = define;
}

Thanks,

-- Petr






[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]