@@ -26,11 +26,11 @@ #include #include #ifndef TDOM_NO_SCHEMA -#include +#include #include #ifdef _MSC_VER #include #else @@ -502,11 +502,11 @@ fprintf (stderr, "\tElementtype '%s'\n", pattern->typeName); } /* Fall through. */ case SCHEMA_CTYPE_CHOICE: case SCHEMA_CTYPE_INTERLEAVE: - fprintf (stderr, "\t%d children\n", pattern->nc); + fprintf (stderr, "\t%d childs\n", pattern->nc); break; case SCHEMA_CTYPE_ANY: if (pattern->namespace) { fprintf (stderr, "\tNamespace: '%s'\n", pattern->namespace); @@ -906,19 +906,12 @@ sdata->cp = wrapperCP; sdata->contentSize = CONTENT_ARRAY_SIZE_INIT; } } if (quant == SCHEMA_CQUANT_NM) { - int i, newChilds, thisquant; - if (m == -1) { - m = n + 1; - newChilds = m; - thisquant = SCHEMA_CQUANT_REP; - } else { - newChilds = (n >= m) ? n : m; - thisquant = SCHEMA_CQUANT_OPT; - } + int i; + int newChilds = (n >= m) ? n : m; while (sdata->cp->nc + newChilds >= sdata->contentSize) { sdata->cp->content = REALLOC (sdata->cp->content, 2 * sdata->contentSize * sizeof (SchemaCP*)); @@ -932,11 +925,11 @@ sdata->cp->content[sdata->cp->nc+i] = pattern; sdata->cp->quants[sdata->cp->nc+i] = SCHEMA_CQUANT_ONE; } for (i = n; i < m; i++) { sdata->cp->content[sdata->cp->nc+i] = pattern; - sdata->cp->quants[sdata->cp->nc+i] = thisquant; + sdata->cp->quants[sdata->cp->nc+i] = SCHEMA_CQUANT_OPT; } sdata->cp->nc = sdata->cp->nc + newChilds; } else { if (sdata->cp->nc == sdata->contentSize) { sdata->cp->content = @@ -2236,11 +2229,11 @@ 0 means rewind with validation error. 1 means element content may end here. - 2 means recovering requested further error reporting about missing children + 2 means recovering requested further error reporting about missing childs in the current element. To be able to answer a [info expected] on the occasion of the next error, we update the stack in this case and let tDOM_probeElementEnd restart checkElementEnd again with this stack state. */ @@ -5434,35 +5427,25 @@ if (*n < 0) { SetResult ("Invalid quant specifier"); return SCHEMA_CQUANT_ERROR; } Tcl_ListObjIndex (interp, quantObj, 1, &thisObj); - if (Tcl_GetIntFromObj (interp, thisObj, m) == TCL_OK) { - if (*n > *m) { - SetResult ("Invalid quant specifier"); - return SCHEMA_CQUANT_ERROR; - } - if (*n == 0 && *m == 1) { - return SCHEMA_CQUANT_OPT; - } - if (*n == 1 && *m == 1) { - return SCHEMA_CQUANT_ONE; - } - return SCHEMA_CQUANT_NM; - } else { - quantStr = Tcl_GetStringFromObj (thisObj, &len); - if (len == 1 && quantStr[0] == '*') { - if (*n == 0) { - return SCHEMA_CQUANT_REP; - } - *m = -1; - return SCHEMA_CQUANT_NM; - } else { - SetResult ("Invalid quant specifier"); - return SCHEMA_CQUANT_ERROR; - } - } + if (Tcl_GetIntFromObj (interp, thisObj, m) != TCL_OK) { + SetResult ("Invalid quant specifier"); + return SCHEMA_CQUANT_ERROR; + } + if (*n > *m) { + SetResult ("Invalid quant specifier"); + return SCHEMA_CQUANT_ERROR; + } + if (*n == 0 && *m == 1) { + return SCHEMA_CQUANT_OPT; + } + if (*n == 1 && *m == 1) { + return SCHEMA_CQUANT_ONE; + } + return SCHEMA_CQUANT_NM; } /* Implements the schema definition command "any" */ static int AnyPatternObjCmd ( @@ -8520,11 +8503,11 @@ CHECK_TI checkNrArgs (2,2,"Expected: "); h = Tcl_FindHashEntry (&sdata->textDef, Tcl_GetString (objv[1])); if (!h) { - SetResult3 ("Unknown text type \"", Tcl_GetString (objv[1]), "\""); + SetResult3 ("Unknown text type \"", Tcl_GetString (objv[2]), "\""); return TCL_ERROR; } ADD_CONSTRAINT (sdata, sc) sc->constraint = typeImpl; sc->constraintData = Tcl_GetHashValue (h);