From: Petr P. <pa...@us...> - 2003-03-21 20:17:17
|
Update of /cvsroot/perl-xml/XML-LibXML-XPathContext In directory sc8-pr-cvs1:/tmp/cvs-serv3691 Modified Files: XPathContext.xs Log Message: - fixed bug with wrong owner assignment for non-context document nodes - regression test for non-context document nodes added Index: XPathContext.xs =================================================================== RCS file: /cvsroot/perl-xml/XML-LibXML-XPathContext/XPathContext.xs,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- XPathContext.xs 21 Mar 2003 16:05:01 -0000 1.15 +++ XPathContext.xs 21 Mar 2003 20:11:03 -0000 1.16 @@ -322,8 +322,10 @@ len = nodelist->nodeNr; for( j ; j < len; j++){ tnode = nodelist->nodeTab[j]; - if( tnode != NULL && tnode->doc != NULL) { - owner = SvPROXYNODE(sv_2mortal(PmmNodeToSv((xmlNodePtr)(tnode->doc), NULL))); + if( tnode != NULL && tnode->doc != NULL) { + owner = PmmOWNERPO(PmmNewNode((xmlNodePtr) tnode->doc)); + } else { + owner = NULL; } if (tnode->type == XML_NAMESPACE_DECL) { element = sv_newmortal(); @@ -819,7 +821,6 @@ int i = 0 ; const char * cls = "XML::LibXML::Node"; xmlNodePtr tnode; - owner = PmmOWNERPO(PmmNewNode(ctxt->node)); len = nodelist->nodeNr; for( i ; i < len; i++){ /* we have to create a new instance of an objectptr. @@ -843,6 +844,11 @@ } } else { + if (tnode->doc) { + owner = PmmOWNERPO(PmmNewNode((xmlNodePtr) tnode->doc)); + } else { + owner = NULL; /* self contained node */ + } element = PmmNodeToSv(tnode, owner); } XPUSHs( sv_2mortal(element) ); @@ -917,7 +923,6 @@ xmlNodePtr tnode; SV * element; - owner = PmmOWNERPO(PmmNewNode(ctxt->node)); len = nodelist->nodeNr; for( i ; i < len; i++){ /* we have to create a new instance of an @@ -944,6 +949,11 @@ } } else { + if (tnode->doc) { + owner = PmmOWNERPO(PmmNewNode((xmlNodePtr) tnode->doc)); + } else { + owner = NULL; /* self contained node */ + } element = PmmNodeToSv(tnode, owner); } XPUSHs( sv_2mortal(element) ); |