garyp 01/08/25 22:07:05
Modified: java/src/org/apache/xpath VariableStack.java
java/src/org/apache/xpath/operations Variable.java
Log:
Fix bug 3265 (http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3265). Using
an expression in the evaluate extension function that contains a top-level
variable was cause an NPE.
Revision Changes Path
1.35 +12 -9 xml-xalan/java/src/org/apache/xpath/VariableStack.java
Index: VariableStack.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/VariableStack.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- VariableStack.java 2001/08/06 05:57:01 1.34
+++ VariableStack.java 2001/08/26 05:07:04 1.35
@@ -444,21 +444,24 @@
org.apache.xalan.templates.ElemTemplateElement prev =
(org.apache.xalan.templates.ElemTemplateElement) prefixResolver;
- while ( !(prev.getParentNode() instanceof
org.apache.xalan.templates.Stylesheet) )
+ if (!(prev instanceof org.apache.xalan.templates.Stylesheet))
{
- org.apache.xalan.templates.ElemTemplateElement savedprev = prev;
-
- while (null != (prev = prev.getPreviousSiblingElem()))
+ while ( !(prev.getParentNode() instanceof
org.apache.xalan.templates.Stylesheet) )
{
- if (prev instanceof org.apache.xalan.templates.ElemVariable)
+ org.apache.xalan.templates.ElemTemplateElement savedprev = prev;
+
+ while (null != (prev = prev.getPreviousSiblingElem()))
{
- vvar = (org.apache.xalan.templates.ElemVariable) prev;
+ if (prev instanceof org.apache.xalan.templates.ElemVariable)
+ {
+ vvar = (org.apache.xalan.templates.ElemVariable) prev;
- if (vvar.getName().equals(qname))
- return getLocalVariable(xctxt, vvar.getIndex());
+ if (vvar.getName().equals(qname))
+ return getLocalVariable(xctxt, vvar.getIndex());
+ }
}
+ prev = savedprev.getParentElem();
}
- prev = savedprev.getParentElem();
}
vvar = prev.getStylesheetRoot().getVariableOrParamComposed(qname);
1.16 +17 -14
xml-xalan/java/src/org/apache/xpath/operations/Variable.java
Index: Variable.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xpath/operations/Variable.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- Variable.java 2001/08/06 22:17:17 1.15
+++ Variable.java 2001/08/26 05:07:04 1.16
@@ -206,27 +206,30 @@
org.apache.xalan.templates.ElemTemplateElement prev =
(org.apache.xalan.templates.ElemTemplateElement) prefixResolver;
-
- while ( !(prev.getParentNode() instanceof
org.apache.xalan.templates.Stylesheet) )
- {
- org.apache.xalan.templates.ElemTemplateElement savedprev = prev;
- while (null != (prev = prev.getPreviousSiblingElem()))
+ if (!(prev instanceof org.apache.xalan.templates.Stylesheet))
+ {
+ while ( !(prev.getParentNode() instanceof
org.apache.xalan.templates.Stylesheet) )
{
- if(prev instanceof org.apache.xalan.templates.ElemVariable)
+ org.apache.xalan.templates.ElemTemplateElement savedprev =
prev;
+
+ while (null != (prev = prev.getPreviousSiblingElem()))
{
- vvar = (org.apache.xalan.templates.ElemVariable) prev;
-
- if (vvar.getName().equals(m_qname))
+ if(prev instanceof org.apache.xalan.templates.ElemVariable)
{
- m_index = vvar.getIndex();
- m_isGlobal = false;
- m_fixUpWasCalled = true;
- return execute(xctxt);
+ vvar = (org.apache.xalan.templates.ElemVariable) prev;
+
+ if (vvar.getName().equals(m_qname))
+ {
+ m_index = vvar.getIndex();
+ m_isGlobal = false;
+ m_fixUpWasCalled = true;
+ return execute(xctxt);
+ }
}
}
+ prev = savedprev.getParentElem();
}
- prev = savedprev.getParentElem();
}
vvar =
prev.getStylesheetRoot().getVariableOrParamComposed(m_qname);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]