cvs diff -u -r1.5 ServerPagesGenerator.java 
Index: ServerPagesGenerator.java
===================================================================
RCS file: /home/cvspublic/xml-cocoon2/src/org/apache/cocoon/generation/ServerPagesGenerator.java,v
retrieving revision 1.5
diff -u -r1.5 ServerPagesGenerator.java
--- ServerPagesGenerator.java	2001/05/29 06:13:47	1.5
+++ ServerPagesGenerator.java	2001/05/31 16:03:44
@@ -191,37 +191,36 @@
         if(generator != null)
             programGenerator.release(generator);
         generator = null;
+		// End any started events in case of premature return
+		while (this.eventStack.size()!=0) {
+		  EventData eventData = (EventData) this.eventStack.removeFirst();
+
+		  switch (eventData.eventType) {
+			case DOCUMENT:
+			  this.contentHandler.endDocument();
+			  break;
+			case ELEMENT:
+			  this.contentHandler.endElement(
+				eventData.getNamespaceURI(),
+				eventData.getLocalName(),
+				eventData.getRawName()
+			  );
+			  break;
+			case PREFIX_MAPPING:
+			  this.contentHandler.endPrefixMapping(eventData.getPrefix());
+			  break;
+			case CDATA:
+			  this.lexicalHandler.endCDATA();
+			  break;
+			case DTD:
+			  this.lexicalHandler.endDTD();
+			  break;
+			case ENTITY:
+			  this.lexicalHandler.endEntity(eventData.getName());
+			  break;
+		  }
+		}
     }
-
-    // End any started events in case of premature return
-    while (this.eventStack.size()!=0) {
-      EventData eventData = (EventData) this.eventStack.removeFirst();
-
-      switch (eventData.eventType) {
-        case DOCUMENT:
-          this.contentHandler.endDocument();
-          break;
-        case ELEMENT:
-          this.contentHandler.endElement(
-            eventData.getNamespaceURI(),
-            eventData.getLocalName(),
-            eventData.getRawName()
-          );
-          break;
-        case PREFIX_MAPPING:
-          this.contentHandler.endPrefixMapping(eventData.getPrefix());
-          break;
-        case CDATA:
-          this.lexicalHandler.endCDATA();
-          break;
-        case DTD:
-          this.lexicalHandler.endDTD();
-          break;
-        case ENTITY:
-          this.lexicalHandler.endEntity(eventData.getName());
-          break;
-      }
-    }
   }
 
   /* Handlers */
@@ -444,6 +443,8 @@
             programGenerator.release(generator);
         this.generator = null;
         this.inputSource = null;
+        // clear the event stack
+        this.eventStack.clear();
     }
 
     /**

