You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@apache.org on 2001/06/22 19:16:50 UTC

cvs commit: xml-xalan/c/src/XSLT VariablesStack.cpp

dbertoni    01/06/22 10:16:50

  Modified:    c/src/XSLT VariablesStack.cpp
  Log:
  No longer push an element frame if it hasn't already been pushed.
  
  Revision  Changes    Path
  1.16      +11 -23    xml-xalan/c/src/XSLT/VariablesStack.cpp
  
  Index: VariablesStack.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/VariablesStack.cpp,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- VariablesStack.cpp	2001/05/10 18:05:32	1.15
  +++ VariablesStack.cpp	2001/06/22 17:16:48	1.16
  @@ -142,7 +142,7 @@
   {
   	const int	nElems = m_stack.size();
   
  -	for(int i = (nElems - 1); i >= 0 && m_stack.empty() == false; --i)
  +	for(int i = nElems - 1; i >= 0 && m_stack.empty() == false; --i)
   	{
   		const StackEntry&			theEntry = m_stack[i];
   		assert(theEntry == back());
  @@ -305,7 +305,7 @@
   {
   	if(elementFrameAlreadyPushed(e) == false)
   	{
  -		pushElementFrame(e);
  +		throw InvalidStackContextException();
   	}
   
   	push(StackEntry(&name, val));
  @@ -531,9 +531,8 @@
   void
   VariablesStack::popElementFrame(const ElemTemplateElement*	elem)
   {
  -	const unsigned int	nElems = getCurrentStackFrameIndex();
  +	const unsigned int	nElems = m_stack.size();
   
  -	// Sub 1 extra for the context marker.
   	for(unsigned int i = nElems - 1; i > 0; --i)
   	{
   		const StackEntry&	theEntry = m_stack[i];
  @@ -566,6 +565,7 @@
   	m_type(eContextMarker),
   	m_qname(0),
   	m_value(),
  +	m_variable(0),
   	m_element(0)
   {
   }
  @@ -613,13 +613,11 @@
   
   VariablesStack::StackEntry::StackEntry(const StackEntry&	theSource) :
   	m_type(theSource.m_type),
  -	m_qname(0),
  -	m_value(),
  -	m_variable(0),
  -	m_element(0)
  +	m_qname(theSource.m_qname),
  +	m_value(theSource.m_value),
  +	m_variable(theSource.m_variable),
  +	m_element(theSource.m_element)
   {
  -	// Use operator=() to do the work...
  -	*this = theSource;
   }
   
   
  @@ -633,25 +631,15 @@
   VariablesStack::StackEntry&
   VariablesStack::StackEntry::operator=(const StackEntry&		theRHS)
   {
  -	m_type = theRHS.m_type;
  -
  -	if (m_type == eVariable || m_type == eParam || m_type == eActiveParam)
  +	if (this != &theRHS)
   	{
  +		m_type = theRHS.m_type;
  +
   		m_qname = theRHS.m_qname;
   
   		m_value = theRHS.m_value;
   
   		m_variable = theRHS.m_variable;
  -
  -		m_element = 0;
  -	}
  -	else if (m_type == eElementFrameMarker)
  -	{
  -		m_qname = 0;
  -
  -		m_value = XObjectPtr();
  -
  -		m_variable = 0;
   
   		m_element = theRHS.m_element;
   	}
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org