From a3480123cf3f0555a78e65ce21357e8ec6e73be2 Mon Sep 17 00:00:00 2001 From: Nick Wellnhofer <wellnhofer@aevum.de> Date: Mon, 8 Nov 2010 10:42:33 +0100 Subject: [PATCH] Fix direct pattern matching bug To: libvir-list@redhat.com and adds a test case for the problem, also adding a .gitignore cleanup Signed-off-by: Daniel Veillard <veillard@redhat.com> --- libxslt/pattern.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libxslt/pattern.c b/libxslt/pattern.c index b7c2391..ef2be01 100644 --- a/libxslt/pattern.c +++ b/libxslt/pattern.c @@ -485,13 +485,15 @@ xsltTestCompMatchDirect(xsltTransformContextPtr ctxt, xsltCompMatchPtr comp, xmlNodePtr parent = node->parent; xmlDocPtr olddoc; xmlNodePtr oldnode; - int oldNsNr; + int oldNsNr, oldContextSize, oldProximityPosition; xmlNsPtr *oldNamespaces; oldnode = ctxt->xpathCtxt->node; olddoc = ctxt->xpathCtxt->doc; oldNsNr = ctxt->xpathCtxt->nsNr; oldNamespaces = ctxt->xpathCtxt->namespaces; + oldContextSize = ctxt->xpathCtxt->contextSize; + oldProximityPosition = ctxt->xpathCtxt->proximityPosition; ctxt->xpathCtxt->node = node; ctxt->xpathCtxt->doc = doc; ctxt->xpathCtxt->namespaces = nsList; @@ -501,6 +503,8 @@ xsltTestCompMatchDirect(xsltTransformContextPtr ctxt, xsltCompMatchPtr comp, ctxt->xpathCtxt->doc = olddoc; ctxt->xpathCtxt->namespaces = oldNamespaces; ctxt->xpathCtxt->nsNr = oldNsNr; + ctxt->xpathCtxt->contextSize = oldContextSize; + ctxt->xpathCtxt->proximityPosition = oldProximityPosition; if (newlist == NULL) return(-1); if (newlist->type != XPATH_NODESET) { -- 1.7.11.4