dbertoni 2004/10/12 12:20:16
Modified: c/src/xalanc/XSLT StylesheetRoot.cpp
Log:
Don't use objects to automatically manage the variables stack when doing
iterative execution, as they interact badly with exceptions.
Revision Changes Path
1.21 +12 -0 xml-xalan/c/src/xalanc/XSLT/StylesheetRoot.cpp
Index: StylesheetRoot.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/xalanc/XSLT/StylesheetRoot.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- StylesheetRoot.cpp 31 Aug 2004 14:20:27 -0000 1.20
+++ StylesheetRoot.cpp 12 Oct 2004 19:20:16 -0000 1.21
@@ -208,6 +208,7 @@
executionContext.pushTime(&sourceTree);
}
+#if defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION)
typedef StylesheetExecutionContext::PushAndPopContextMarker
PushAndPopContextMarker;
typedef StylesheetExecutionContext::PushAndPopElementFrame
PushAndPopElementFrame;
typedef StylesheetExecutionContext::ResolveAndClearTopLevelParams
ResolveAndClearTopLevelParams;
@@ -219,6 +220,11 @@
0);
ResolveAndClearTopLevelParams
theResolveAndClearTopLevelParams(executionContext);
+#else
+ executionContext.pushContextMarker();
+ executionContext.pushElementFrame(0);
+ executionContext.resolveTopLevelParams();
+#endif
#if defined(XALAN_VQ_SPECIAL_TRACE)
QuantifyStartRecordingData();
@@ -250,6 +256,12 @@
executionContext.displayDuration(XalanMessageLoader::getMessage(XalanMessages::Transform),
&sourceTree);
executionContext.diag(StaticStringToDOMString(XALAN_STATIC_UCODE_STRING("")));
}
+
+#if !defined(XALAN_RECURSIVE_STYLESHEET_EXECUTION)
+ executionContext.clearTopLevelParams();
+ executionContext.popElementFrame();
+ executionContext.popContextMarker();
+#endif
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]