diff --git a/ChangeLog b/ChangeLog
index 44c96bf..c29d678 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon Feb 18 20:16:15 CET 2002 Daniel Veillard <daniel@veillard.com>
+
+	* xmlInternald.c: isExtender was missing a char 
+	* parser.c include/libxml/parser.h: % are acceptable in the
+	  internal subset if within a PUBLIC ID
+
 Mon Feb 18 19:27:32 CET 2002 Daniel Veillard <daniel@veillard.com>
 
 	* SAX.c parserInternals.c valid.c: more work on the conformance
diff --git a/include/libxml/parser.h b/include/libxml/parser.h
index eb7e62f..341c559 100644
--- a/include/libxml/parser.h
+++ b/include/libxml/parser.h
@@ -112,7 +112,8 @@
     XML_PARSER_ATTRIBUTE_VALUE,	/* within an attribute value */
     XML_PARSER_SYSTEM_LITERAL,	/* within a SYSTEM value */
     XML_PARSER_EPILOG, 		/* the Misc* after the last end tag */
-    XML_PARSER_IGNORE		/* within an IGNORED section */
+    XML_PARSER_IGNORE,		/* within an IGNORED section */
+    XML_PARSER_PUBLIC_LITERAL 	/* within a PUBLIC value */
 } xmlParserInputState;
 
 /**
diff --git a/parser.c b/parser.c
index da0e2ed..83a850a 100644
--- a/parser.c
+++ b/parser.c
@@ -727,6 +727,7 @@
         case XML_PARSER_ATTRIBUTE_VALUE:
         case XML_PARSER_PI:
 	case XML_PARSER_SYSTEM_LITERAL:
+	case XML_PARSER_PUBLIC_LITERAL:
 	    /* we just ignore it there */
 	    return;
         case XML_PARSER_EPILOG:
@@ -2468,6 +2469,7 @@
     xmlChar cur;
     xmlChar stop;
     int count = 0;
+    xmlParserInputState oldstate = ctxt->instate;
 
     SHRINK;
     if (RAW == '"') {
@@ -2491,6 +2493,7 @@
 		"malloc of %d byte failed\n", size);
 	return(NULL);
     }
+    ctxt->instate = XML_PARSER_PUBLIC_LITERAL;
     cur = CUR;
     while ((IS_PUBIDCHAR(cur)) && (cur != stop)) { /* checked */
 	if (len + 1 >= size) {
@@ -2526,6 +2529,7 @@
     } else {
 	NEXT;
     }
+    ctxt->instate = oldstate;
     return(buf);
 }
 
@@ -3417,7 +3421,11 @@
 			    (ctxt->sax->error != NULL))
 			    ctxt->sax->error(ctxt->userData,
 				        "Invalid URI: %s\n", URI);
-			ctxt->wellFormed = 0;
+			/*
+			 * This really ought to be a well formedness error
+			 * but the XML Core WG decided otherwise c.f. issue
+			 * E26 of the XML erratas.
+			 */
 		    } else {
 			if (uri->fragment != NULL) {
 			    ctxt->errNo = XML_ERR_URI_FRAGMENT;
@@ -3426,6 +3434,10 @@
 				(ctxt->sax->error != NULL))
 				ctxt->sax->error(ctxt->userData,
 					    "Fragment not allowed: %s\n", URI);
+			    /*
+			     * Okay this is foolish to block those but not
+			     * invalid URIs.
+			     */
 			    ctxt->wellFormed = 0;
 			} else {
 			    if ((ctxt->sax != NULL) &&
@@ -3468,7 +3480,11 @@
 			    (ctxt->sax->error != NULL))
 			    ctxt->sax->error(ctxt->userData,
 				        "Invalid URI: %s\n", URI);
-			ctxt->wellFormed = 0;
+			/*
+			 * This really ought to be a well formedness error
+			 * but the XML Core WG decided otherwise c.f. issue
+			 * E26 of the XML erratas.
+			 */
 		    } else {
 			if (uri->fragment != NULL) {
 			    ctxt->errNo = XML_ERR_URI_FRAGMENT;
@@ -3477,6 +3493,10 @@
 				(ctxt->sax->error != NULL))
 				ctxt->sax->error(ctxt->userData,
 					    "Fragment not allowed: %s\n", URI);
+			    /*
+			     * Okay this is foolish to block those but not
+			     * invalid URIs.
+			     */
 			    ctxt->wellFormed = 0;
 			}
 			xmlFreeURI(uri);
@@ -8649,6 +8669,15 @@
 			"PP: entering START_TAG\n");
 #endif
 		break;
+            case XML_PARSER_PUBLIC_LITERAL:
+		xmlGenericError(xmlGenericErrorContext,
+			"PP: internal error, state == PUBLIC_LITERAL\n");
+		ctxt->instate = XML_PARSER_START_TAG;
+#ifdef DEBUG_PUSH
+		xmlGenericError(xmlGenericErrorContext,
+			"PP: entering START_TAG\n");
+#endif
+		break;
 	}
     }
 done:    
diff --git a/parserInternals.c b/parserInternals.c
index 16759ec..cdf8dcb 100644
--- a/parserInternals.c
+++ b/parserInternals.c
@@ -817,7 +817,7 @@
     case 0x0640: case 0x0E46: case 0x0EC6: case 0x3005:
     case 0x3031: case 0x3032: case 0x3033: case 0x3034:
     case 0x3035: case 0x309D: case 0x309E: case 0x30FC:
-    case 0x30FE:
+    case 0x30FD: case 0x30FE:
 	return 1;
     default:
 	return 0;
