| Index: third_party/libxml/src/xmlregexp.c
|
| diff --git a/third_party/libxml/src/xmlregexp.c b/third_party/libxml/src/xmlregexp.c
|
| index 3e912ab92e803abc3e48215f1479b97a296256b1..727fef4d7037b5b76c3f9b07c969541afaacfc35 100644
|
| --- a/third_party/libxml/src/xmlregexp.c
|
| +++ b/third_party/libxml/src/xmlregexp.c
|
| @@ -1544,6 +1544,7 @@ static int
|
| xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
|
| xmlRegStatePtr to, xmlRegAtomPtr atom) {
|
| xmlRegStatePtr end;
|
| + int nullable = 0;
|
|
|
| if (atom == NULL) {
|
| ERROR("genrate transition: atom == NULL");
|
| @@ -1730,6 +1731,13 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
|
| if (xmlRegAtomPush(ctxt, atom) < 0) {
|
| return(-1);
|
| }
|
| + if ((atom->quant == XML_REGEXP_QUANT_RANGE) &&
|
| + (atom->min == 0) && (atom->max > 0)) {
|
| + nullable = 1;
|
| + atom->min = 1;
|
| + if (atom->max == 1)
|
| + atom->quant = XML_REGEXP_QUANT_OPT;
|
| + }
|
| xmlRegStateAddTrans(ctxt, from, atom, to, -1, -1);
|
| ctxt->state = end;
|
| switch (atom->quant) {
|
| @@ -1747,11 +1755,8 @@ xmlFAGenerateTransitions(xmlRegParserCtxtPtr ctxt, xmlRegStatePtr from,
|
| xmlRegStateAddTrans(ctxt, to, atom, to, -1, -1);
|
| break;
|
| case XML_REGEXP_QUANT_RANGE:
|
| -#if DV_test
|
| - if (atom->min == 0) {
|
| + if (nullable)
|
| xmlFAGenerateEpsilonTransition(ctxt, from, to);
|
| - }
|
| -#endif
|
| break;
|
| default:
|
| break;
|
| @@ -6345,7 +6350,7 @@ struct _xmlExpCtxt {
|
| /**
|
| * xmlExpNewCtxt:
|
| * @maxNodes: the maximum number of nodes
|
| - * @dict: optional dictionnary to use internally
|
| + * @dict: optional dictionary to use internally
|
| *
|
| * Creates a new context for manipulating expressions
|
| *
|
| @@ -7204,7 +7209,7 @@ xmlExpStringDerive(xmlExpCtxtPtr ctxt, xmlExpNodePtr exp,
|
| return(NULL);
|
| }
|
| /*
|
| - * check the string is in the dictionnary, if yes use an interned
|
| + * check the string is in the dictionary, if yes use an interned
|
| * copy, otherwise we know it's not an acceptable input
|
| */
|
| input = xmlDictExists(ctxt->dict, str, len);
|
|
|