diff options
author | William M. Brack <wbrack@src.gnome.org> | 2002-06-28 15:01:24 +0000 |
---|---|---|
committer | William M. Brack <wbrack@src.gnome.org> | 2002-06-28 15:01:24 +0000 |
commit | 692092b5886073a8cd1c97bb7d57579e4a9cfc3f (patch) | |
tree | 61b7b5f5f3c84db1ffb864f4429c802ce89a06f5 | |
parent | 6000af549b49464a3b1947fc582998a1c9ff7c79 (diff) | |
download | android_external_libxml2-692092b5886073a8cd1c97bb7d57579e4a9cfc3f.tar.gz android_external_libxml2-692092b5886073a8cd1c97bb7d57579e4a9cfc3f.tar.bz2 android_external_libxml2-692092b5886073a8cd1c97bb7d57579e4a9cfc3f.zip |
further xpath enhancement
-rw-r--r-- | xpath.c | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -9591,6 +9591,7 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) xmlNodePtr bak; xmlDocPtr bakd; int pp; + int cs; CHECK_ERROR0; comp = ctxt->comp; @@ -9601,6 +9602,7 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) bakd = ctxt->context->doc; bak = ctxt->context->node; pp = ctxt->context->proximityPosition; + cs = ctxt->context->contextSize; total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); CHECK_ERROR0; xmlXPathBooleanFunction(ctxt, 1); @@ -9610,6 +9612,7 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) ctxt->context->doc = bakd; ctxt->context->node = bak; ctxt->context->proximityPosition = pp; + ctxt->context->contextSize = cs; total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); if (ctxt->error) { xmlXPathFreeObject(arg2); @@ -9625,6 +9628,7 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) bakd = ctxt->context->doc; bak = ctxt->context->node; pp = ctxt->context->proximityPosition; + cs = ctxt->context->contextSize; total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); CHECK_ERROR0; xmlXPathBooleanFunction(ctxt, 1); @@ -9634,6 +9638,7 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) ctxt->context->doc = bakd; ctxt->context->node = bak; ctxt->context->proximityPosition = pp; + ctxt->context->contextSize = cs; total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); if (ctxt->error) { xmlXPathFreeObject(arg2); @@ -9649,11 +9654,13 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) bakd = ctxt->context->doc; bak = ctxt->context->node; pp = ctxt->context->proximityPosition; + cs = ctxt->context->contextSize; total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); CHECK_ERROR0; ctxt->context->doc = bakd; ctxt->context->node = bak; ctxt->context->proximityPosition = pp; + ctxt->context->contextSize = cs; total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); CHECK_ERROR0; equal = xmlXPathEqualValues(ctxt); @@ -9666,11 +9673,13 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) bakd = ctxt->context->doc; bak = ctxt->context->node; pp = ctxt->context->proximityPosition; + cs = ctxt->context->contextSize; total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); CHECK_ERROR0; ctxt->context->doc = bakd; ctxt->context->node = bak; ctxt->context->proximityPosition = pp; + ctxt->context->contextSize = cs; total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); CHECK_ERROR0; ret = xmlXPathCompareValues(ctxt, op->value, op->value2); @@ -9680,12 +9689,14 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) bakd = ctxt->context->doc; bak = ctxt->context->node; pp = ctxt->context->proximityPosition; + cs = ctxt->context->contextSize; total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); CHECK_ERROR0; if (op->ch2 != -1) { ctxt->context->doc = bakd; ctxt->context->node = bak; ctxt->context->proximityPosition = pp; + ctxt->context->contextSize = cs; total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); } CHECK_ERROR0; @@ -9704,11 +9715,13 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) bakd = ctxt->context->doc; bak = ctxt->context->node; pp = ctxt->context->proximityPosition; + cs = ctxt->context->contextSize; total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); CHECK_ERROR0; ctxt->context->doc = bakd; ctxt->context->node = bak; ctxt->context->proximityPosition = pp; + ctxt->context->contextSize = cs; total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); CHECK_ERROR0; if (op->value == 0) @@ -9722,11 +9735,13 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op) bakd = ctxt->context->doc; bak = ctxt->context->node; pp = ctxt->context->proximityPosition; + cs = ctxt->context->contextSize; total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch1]); CHECK_ERROR0; ctxt->context->doc = bakd; ctxt->context->node = bak; ctxt->context->proximityPosition = pp; + ctxt->context->contextSize = cs; total += xmlXPathCompOpEval(ctxt, &comp->steps[op->ch2]); CHECK_ERROR0; CHECK_TYPE0(XPATH_NODESET); |