diff --git a/xmlreader.c b/xmlreader.c
index a65a1bf..7c04a0e 100644
--- a/xmlreader.c
+++ b/xmlreader.c
@@ -134,16 +134,21 @@
 xmlTextReaderStartElement(void *ctx, const xmlChar *fullname,
 	                  const xmlChar **atts) {
     xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
+    xmlParserCtxtPtr origctxt;
     xmlTextReaderPtr reader = ctxt->_private;
 
 #ifdef DEBUG_CALLBACKS
     printf("xmlTextReaderStartElement(%s)\n", fullname);
 #endif
     if ((reader != NULL) && (reader->startElement != NULL)) {
+	/*
+	 * when processing an entity, the context may have been changed
+	 */
+	origctxt = reader->ctxt;
 	reader->startElement(ctx, fullname, atts);
-	if (ctxt->validate) {
-	    ctxt->valid &= xmlValidatePushElement(&ctxt->vctxt, ctxt->myDoc,
-		                                  ctxt->node, fullname);
+	if (origctxt->validate) {
+	    ctxt->valid &= xmlValidatePushElement(&origctxt->vctxt,
+				 ctxt->myDoc, ctxt->node, fullname);
 	}
     }
     reader->state = XML_TEXTREADER_ELEMENT;
@@ -159,6 +164,7 @@
 static void
 xmlTextReaderEndElement(void *ctx, const xmlChar *fullname) {
     xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
+    xmlParserCtxtPtr origctxt;
     xmlTextReaderPtr reader = ctxt->_private;
 
 #ifdef DEBUG_CALLBACKS
@@ -166,12 +172,16 @@
 #endif
     if ((reader != NULL) && (reader->endElement != NULL)) {
 	xmlNodePtr node = ctxt->node;
+	/*
+	 * when processing an entity, the context may have been changed
+	 */
+	origctxt = reader->ctxt;
 
 	reader->endElement(ctx, fullname);
 
-	if (ctxt->validate) {
-	    ctxt->valid &= xmlValidatePopElement(&ctxt->vctxt, ctxt->myDoc,
-		                                 node, fullname);
+	if (origctxt->validate) {
+	    ctxt->valid &= xmlValidatePopElement(&origctxt->vctxt,
+		                ctxt->myDoc, node, fullname);
 	}
     }
     if (reader->state == XML_TEXTREADER_ELEMENT)
@@ -192,6 +202,7 @@
 xmlTextReaderCharacters(void *ctx, const xmlChar *ch, int len)
 {
     xmlParserCtxtPtr ctxt = (xmlParserCtxtPtr) ctx;
+    xmlParserCtxtPtr origctxt;
     xmlTextReaderPtr reader = ctxt->_private;
 
 #ifdef DEBUG_CALLBACKS
@@ -199,9 +210,13 @@
 #endif
     if ((reader != NULL) && (reader->characters != NULL)) {
 	reader->characters(ctx, ch, len);
+	/*
+	 * when processing an entity, the context may have been changed
+	 */
+	origctxt = reader->ctxt;
 
-	if (ctxt->validate) {
-	    ctxt->valid &= xmlValidatePushCData(&ctxt->vctxt, ch, len);
+	if (origctxt->validate) {
+	    ctxt->valid &= xmlValidatePushCData(&origctxt->vctxt, ch, len);
 	}
     }
 }
