PaulHowarth/Blog/2011-06-18

Saturday 18th June 2011

Fedora Project

  • Updated libxml in F-13, F-14, F-15 and Rawhide to fix the broken XPath implementation, which was failing the regression tests and, more significantly, segfaulting on 32-bit builds; this was a result of a pointer being cast from type xmlDocPtr to xmlNodePtr (which have only a few structure members in common) and trying to access non-existent elements of the resulting xmlNode (upstream said that the cast was generally safe to do but that was because there were lots of special-case tests in the code to see if the xmlNodePtr was really a xmlDocPtr and act accordingly, but one had been missed, resulting in the segfault and failed XPath tests)

  • This simple addition to the code fixed it:
  • --- libxml-1.8.17/xpath.c.orig  2011-06-18 16:26:57.430229932 +0100
    +++ libxml-1.8.17/xpath.c       2011-06-18 19:27:03.295989406 +0100
    @@ -1537,6 +1539,8 @@
             return(ctxt->context->node->childs);
         }
     
    +    if (cur == (xmlNodePtr) ctxt->context->doc)
    +        return(ctxt->context->doc->root);
         if (cur->childs != NULL) return(cur->childs);
         if (cur->next != NULL) return(cur->next);

Local Packages

  • Updated libxml as per the Fedora version

  • Updated perl-XML-LibXML to 1.73:

    • Calculating $err->column() properly, so it won't be maxed out at 80 (CPAN RT#66642)

    • Update the repository in the documentation to point to the bitbucket.org one
    • Revamped Makefile.PL:

      • Got rid of "\t" characters

      • Add "use strict" and "use warnings"

      • Add resources and keywords to the META_MERGE

      • Other changes
    • Fix CPAN RT#53632: when calling normalize on a node, processing of children nodes will stop when an empty element node is encountered

    • Apply the patch from Daniel Fetter's InputCallbackFix branch:

      • A partial fix to CPAN RT#4263

      • Call two $parser->parse_string() in succession

    • Apply the NestedParsing patch (more of CPAN RT#4263):

      • Updated how legacy parser local callbacks are utilized by init_callbacks so that the XML::LibXML::InputCallback object doesn't have to be temporarily modified during the parsing process; this change could break code for users that have subclassed XML::LibXML::InputCallback and overridden the init_callbacks method

    • Documentation fixes patch from Daniel Fetter


Recent