diff --git a/ChangeLog b/ChangeLog
index 528d74e..83c0761 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Wed Mar  7 20:43:47 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
+
+	* parser.c SAX.c: the new content parsing code raised an
+	  ugly bug in the characters() SAX callback. Found it
+	  just because of strangeness in XSLT XML Rec ouptut :-(
+
 Wed Mar  7 16:50:22 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
 
 	* Makefile.am: Martin Baulig suggested to add -lm
diff --git a/SAX.c b/SAX.c
index d7e256b..5882d41 100644
--- a/SAX.c
+++ b/SAX.c
@@ -1189,7 +1189,8 @@
 	}
 #endif
     } else {
-	if ((xmlNodeIsText(lastChild)) && (ctxt->nodemem != 0)) {
+	int isText = xmlNodeIsText(lastChild);
+	if ((isText) && (ctxt->nodemem != 0)) {
 #ifndef XML_USE_BUFFER_CONTENT
 	    /*
 	     * The whole point of maintaining nodelen and nodemem,
@@ -1220,6 +1221,12 @@
 #else
 	    xmlTextConcat(lastChild, ch, len);
 #endif
+	} else if (isText) {
+	    xmlTextConcat(lastChild, ch, len);
+	    if (ctxt->node->children != NULL) {
+		ctxt->nodelen = xmlStrlen(lastChild->content);
+		ctxt->nodemem = ctxt->nodelen + 1;
+	    }
 	} else {
 	    /* Mixed content, first time */
 	    lastChild = xmlNewTextLen(ch, len);
diff --git a/parser.c b/parser.c
index 707bf8a..bc85020 100644
--- a/parser.c
+++ b/parser.c
@@ -2450,15 +2450,17 @@
 		continue; /* while */
 	    }
 	    nbchar = in - ctxt->input->cur;
-	    if (IS_BLANK(*ctxt->input->cur) &&
-		areBlanks(ctxt, ctxt->input->cur, nbchar)) {
-		if (ctxt->sax->ignorableWhitespace != NULL)
-		    ctxt->sax->ignorableWhitespace(ctxt->userData,
-					   ctxt->input->cur, nbchar);
-	    } else {
-		if (ctxt->sax->characters != NULL)
-		    ctxt->sax->characters(ctxt->userData,
-					  ctxt->input->cur, nbchar);
+	    if (nbchar > 0) {
+		if (IS_BLANK(*ctxt->input->cur) &&
+		    areBlanks(ctxt, ctxt->input->cur, nbchar)) {
+		    if (ctxt->sax->ignorableWhitespace != NULL)
+			ctxt->sax->ignorableWhitespace(ctxt->userData,
+					       ctxt->input->cur, nbchar);
+		} else {
+		    if (ctxt->sax->characters != NULL)
+			ctxt->sax->characters(ctxt->userData,
+					      ctxt->input->cur, nbchar);
+		}
 	    }
 	    ctxt->input->cur = in;
 	    if (*in == 0xD) {
@@ -2471,7 +2473,10 @@
 		}
 		in--;
 	    }
-	    if ((*in == '<') || (*in == '&')) {
+	    if (*in == '<') {
+		return;
+	    }
+	    if (*in == '&') {
 		return;
 	    }
 	    SHRINK;
