Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch wip Excluding Merge-Ins

This is equivalent to a diff from 4abf418fab to b3b0b78e14

2024-10-09
22:54
First round of build tests on a couple of platforms and OS. check-in: d4df8c0072 user: rolf tags: trunk
22:47
Simplest (*)printf d modifier limbo I could find. Closed-Leaf check-in: b3b0b78e14 user: rolf tags: wip
00:40
More casts. check-in: cb3dba8a81 user: rolf tags: wip
2024-10-03
14:33
wip check-in: 5c33cee20e user: rolf tags: wip
2024-10-02
00:12
Merge trunk. check-in: e1154f061d user: rolf tags: prepare-release
2024-10-01
23:16
Adapted test to the changed error message. check-in: 4abf418fab user: rolf tags: trunk
22:58
Attempt to clean up the fall out of the recent type changes. check-in: 908f9bb47d user: rolf tags: trunk

Changes to configure.

   615    615   # include <stdint.h>
   616    616   #endif
   617    617   #ifdef HAVE_UNISTD_H
   618    618   # include <unistd.h>
   619    619   #endif"
   620    620   
   621    621   ac_subst_vars='LTLIBOBJS
   622         -PKG_STUB_LIB_PATH
   623         -PKG_BUILD_STUB_LIB_PATH
   624         -PKG_STUB_LIB_SPEC
   625         -PKG_BUILD_STUB_LIB_SPEC
          622  +PATCHLEVEL
          623  +MINOR_VERSION
          624  +MAJOR_VERSION
          625  +tdom_STUB_LIB_PATH
          626  +tdom_BUILD_STUB_LIB_PATH
          627  +tdom_STUB_LIB_SPEC
          628  +tdom_BUILD_STUB_LIB_SPEC
          629  +tdom_LIB_SPEC
          630  +tdom_BUILD_LIB_SPEC
   626    631   TDOMSHELL
   627    632   TCLSH_PROG
   628    633   VC_MANIFEST_EMBED_EXE
   629    634   VC_MANIFEST_EMBED_DLL
   630    635   RANLIB_STUB
   631    636   PKG_STUB_LIB_FILE
   632    637   MAKE_STUB_LIB
................................................................................
  9076   9081   
  9077   9082   
  9078   9083   TDOMSHELL=tcldomsh
  9079   9084   
  9080   9085   
  9081   9086   
  9082   9087       #--------------------------------------------------------------------
  9083         -    # These are for ${PACKAGE_NAME}Config.sh
         9088  +    # These are for tdomConfig.sh
  9084   9089       #--------------------------------------------------------------------
  9085   9090   
  9086   9091       # pkglibdir must be a fully qualified path and (not ${exec_prefix}/lib)
  9087         -    eval pkglibdir="${libdir}/${PACKAGE_NAME}${PACKAGE_VERSION}"
         9092  +    eval pkglibdir="${libdir}/tdom${PACKAGE_VERSION}"
  9088   9093       if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
  9089         -	eval PKG_STUB_LIB_FLAG="-l${PACKAGE_NAME}stub${PACKAGE_VERSION}"
         9094  +	eval tdom_LIB_FLAG="-ltdom${PACKAGE_VERSION}"
         9095  +	eval tdom_STUB_LIB_FLAG="-ltdomstub${PACKAGE_VERSION}"
  9090   9096       else
  9091         -	eval PKG_STUB_LIB_FLAG="-l${PACKAGE_NAME}stub`echo ${PACKAGE_VERSION} | tr -d .`"
         9097  +	eval tdom_LIB_FLAG="-ltdom`echo ${PACKAGE_VERSION} | tr -d .`"
         9098  +	eval tdom_STUB_LIB_FLAG="-ltdomstub`echo ${PACKAGE_VERSION} | tr -d .`"
         9099  +    fi
         9100  +    if test "${TCL_MAJOR_VERSION}" -gt 8 -a x"${with_tcl8}" = x; then
         9101  +	eval tdom_STUB_LIB_FLAG="-ltdomstub"
  9092   9102       fi
  9093         -    PKG_BUILD_STUB_LIB_SPEC="-L`pwd` ${PKG_STUB_LIB_FLAG}"
  9094         -    PKG_STUB_LIB_SPEC="-L${pkglibdir} ${PKG_STUB_LIB_FLAG}"
  9095         -    PKG_BUILD_STUB_LIB_PATH="`pwd`/${PKG_STUB_LIB_FILE}"
  9096         -    PKG_STUB_LIB_PATH="${pkglibdir}/${PKG_STUB_LIB_FILE}"
         9103  +
         9104  +    tdom_BUILD_LIB_SPEC="-L`$CYGPATH $(pwd)` ${tdom_LIB_FLAG}"
         9105  +    tdom_LIB_SPEC="-L`$CYGPATH ${pkglibdir}` ${tdom_LIB_FLAG}"
         9106  +    tdom_BUILD_STUB_LIB_SPEC="-L`$CYGPATH $(pwd)` ${tdom_STUB_LIB_FLAG}"
         9107  +    tdom_STUB_LIB_SPEC="-L`$CYGPATH ${pkglibdir}` ${tdom_STUB_LIB_FLAG}"
         9108  +    tdom_BUILD_STUB_LIB_PATH="`$CYGPATH $(pwd)`/${PKG_STUB_LIB_FILE}"
         9109  +    tdom_STUB_LIB_PATH="`$CYGPATH ${pkglibdir}`/${PKG_STUB_LIB_FILE}"
         9110  +
         9111  +
         9112  +
         9113  +
         9114  +
         9115  +
  9097   9116   
  9098   9117   
  9099   9118   
  9100   9119   
  9101   9120   
  9102   9121   
  9103   9122   

Changes to configure.ac.

   249    249   TDOM_ENABLE_TDOMALLOC
   250    250   TDOM_ENABLE_LESS_NS
   251    251   TDOM_ENABLE_SCHEMA
   252    252   
   253    253   TDOMSHELL=tcldomsh
   254    254   AC_SUBST(TDOMSHELL)
   255    255   
   256         -TDOM_EXPORT_CONFIG
          256  +TEA_EXPORT_CONFIG([tdom])
   257    257   
   258    258   #--------------------------------------------------------------------
   259    259   # Finally, substitute all of the various values into the Makefile.
   260    260   # You may alternatively have a special pkgIndex.tcl.in or other files
   261    261   # which require substituting the AC variables in. Include these here.
   262    262   #--------------------------------------------------------------------
   263    263   
   264    264   AC_CONFIG_FILES([Makefile pkgIndex.tcl tdomConfig.sh])
   265    265   AC_OUTPUT

Changes to generic/dom.c.

   459    459               break;
   460    460           }
   461    461           p += clen;
   462    462       }
   463    463       if (!*changed) {
   464    464           return;
   465    465       }
   466         -    Tcl_DStringAppend (clearedstr, str, p-str);
          466  +    Tcl_DStringAppend (clearedstr, str, (domLength)(p-str));
   467    467       if (repllen) {
   468    468           Tcl_DStringAppend (clearedstr, replacement, repllen);
   469    469       }
   470    470       if (clen) {
   471    471           p += clen;
   472    472       } else {
   473    473           /* If it isn't a UTF-8 encoded character what is it? And how
................................................................................
   474    474            * many of whatever it is? */
   475    475           p++;
   476    476       }
   477    477       s = p;
   478    478       while (*p) {
   479    479           clen = UTF8_CHAR_LEN(*p);
   480    480           if (!clen || !UTF8_XMLCHAR((unsigned const char*)p,clen)) {
   481         -            Tcl_DStringAppend (clearedstr, s, p-s);
          481  +            Tcl_DStringAppend (clearedstr, s, (domLength)(p-s));
   482    482               if (repllen) {
   483    483                   Tcl_DStringAppend (clearedstr, replacement, repllen);
   484    484               }
   485    485               if (clen) {
   486    486                   p += clen;
   487    487               } else {
   488    488                   p++;
   489    489               }
   490    490               s = p;
   491    491           } else {
   492    492               p += clen;
   493    493           }
   494    494       }
   495         -    Tcl_DStringAppend (clearedstr, s, p-s);
          495  +    Tcl_DStringAppend (clearedstr, s, (domLength)(p-s));
   496    496   }
   497    497   
   498    498   /*---------------------------------------------------------------------------
   499    499   |   domIsBMPChar 
   500    500   |
   501    501   \--------------------------------------------------------------------------*/
   502    502   int
................................................................................
   525    525       const char *str
   526    526       )
   527    527   {
   528    528       const char *p;
   529    529       domLength len, i = 0;
   530    530       
   531    531       p = str;
   532         -    len = strlen (str);
          532  +    len = (domLength)strlen (str);
   533    533       while (i < len) {
   534    534           if (*p == '-') {
   535    535               if (i == len - 1) return 0;
   536    536               p++; i++;
   537    537               if (*p == '-') return 0;
   538    538           }
   539    539           p++; i++;
................................................................................
   550    550       const char *str
   551    551       )
   552    552   {
   553    553       const char *p;
   554    554       domLength len, i = 0;
   555    555   
   556    556       p = str;
   557         -    len = strlen (str);
          557  +    len = (domLength)strlen (str);
   558    558       while (i < len - 2) {
   559    559           if (  *p == ']'
   560    560               && p[1] == ']'
   561    561               && p[2] == '>') return 0;
   562    562           p++; i++;
   563    563       }
   564    564       return domIsChar (str);
................................................................................
   573    573       const char *str
   574    574       )
   575    575   {
   576    576       const char *p;
   577    577       domLength len, i = 0;
   578    578   
   579    579       p = str;
   580         -    len = strlen (str);
          580  +    len = (domLength)strlen (str);
   581    581       while (i < len - 1) {
   582    582           if (*p == '?' && p[1] == '>') return 0;
   583    583           p++; i++;
   584    584       }
   585    585       return domIsChar (str);
   586    586   }
   587    587   
................................................................................
  1369   1369                   memset(attrnode, 0, sizeof(domAttrNode));
  1370   1370                   attrnode->nodeType    = ATTRIBUTE_NODE;
  1371   1371                   attrnode->nodeFlags   = IS_NS_NODE;
  1372   1372                   attrnode->namespace   = ns->index;
  1373   1373                   attrnode->nodeName    = (char *)&(h->key);
  1374   1374                   attrnode->parentNode  = node;
  1375   1375                   len = strlen(atPtr[1]);
  1376         -                attrnode->valueLength = len;
         1376  +                attrnode->valueLength = (domLength)len;
  1377   1377                   attrnode->nodeValue   = (char*)MALLOC(len+1);
  1378   1378                   strcpy(attrnode->nodeValue, atPtr[1]);
  1379   1379                   if (node->firstAttr) {
  1380   1380                       lastAttr->nextSibling = attrnode;
  1381   1381                   } else {
  1382   1382                       node->firstAttr = attrnode;
  1383   1383                   }
................................................................................
  1471   1471           attrnode->nodeType = ATTRIBUTE_NODE;
  1472   1472           if (atPtr == idAttPtr) {
  1473   1473               attrnode->nodeFlags |= IS_ID_ATTRIBUTE;
  1474   1474           }
  1475   1475           attrnode->nodeName    = (char *)&(h->key);
  1476   1476           attrnode->parentNode  = node;
  1477   1477           len = strlen(atPtr[1]);
  1478         -        attrnode->valueLength = len;
         1478  +        attrnode->valueLength = (domLength)len;
  1479   1479           attrnode->nodeValue   = (char*)MALLOC(len+1);
  1480   1480           strcpy(attrnode->nodeValue, (char *)atPtr[1]);
  1481   1481   
  1482   1482           if (node->firstAttr) {
  1483   1483               lastAttr->nextSibling = attrnode;
  1484   1484           } else {
  1485   1485               node->firstAttr = attrnode;
................................................................................
  1598   1598       domReadInfo   *info = userData;
  1599   1599       
  1600   1600       Tcl_DStringAppend (info->cdata, s, len);
  1601   1601       if (info->storeLineColumn) {
  1602   1602           /* This works because the result of XML_GetCurrentLineNumber()
  1603   1603            * is always at least 1 */
  1604   1604           if (!info->textStartLine) {
  1605         -            info->textStartLine = XML_GetCurrentLineNumber (info->parser);
  1606         -            info->textStartColumn = XML_GetCurrentColumnNumber (info->parser);
  1607         -            info->textStartByteIndex = XML_GetCurrentByteIndex (info->parser);
         1605  +            info->textStartLine = (domLength)XML_GetCurrentLineNumber (info->parser);
         1606  +            info->textStartColumn = (domLength)XML_GetCurrentColumnNumber (info->parser);
         1607  +            info->textStartByteIndex = (domLength)XML_GetCurrentByteIndex (info->parser);
  1608   1608           }
  1609   1609       }
  1610   1610       
  1611   1611       return;
  1612   1612       
  1613   1613   }
  1614   1614   
................................................................................
  1623   1623   {
  1624   1624       domReadInfo   *info = userData;
  1625   1625   
  1626   1626       DispatchPCDATA (info);
  1627   1627       info->cdataSection = 1;
  1628   1628       if (info->storeLineColumn) {
  1629   1629           if (!info->textStartLine) {
  1630         -            info->textStartLine = XML_GetCurrentLineNumber (info->parser);
  1631         -            info->textStartColumn = XML_GetCurrentColumnNumber (info->parser);
  1632         -            info->textStartByteIndex = XML_GetCurrentByteIndex (info->parser);
         1630  +            info->textStartLine = (domLength)XML_GetCurrentLineNumber (info->parser);
         1631  +            info->textStartColumn = (domLength)XML_GetCurrentColumnNumber (info->parser);
         1632  +            info->textStartByteIndex = (domLength)XML_GetCurrentByteIndex (info->parser);
  1633   1633           }
  1634   1634       }
  1635   1635   }
  1636   1636   
  1637   1637   /*---------------------------------------------------------------------------
  1638   1638   |   endCDATA
  1639   1639   |
................................................................................
  1813   1813                                           + sizeof(domLineColumn));
  1814   1814       } else {
  1815   1815           node = (domTextNode*) domAlloc(sizeof(domTextNode));
  1816   1816       }
  1817   1817       memset(node, 0, sizeof(domTextNode));
  1818   1818       node->nodeType    = COMMENT_NODE;
  1819   1819       node->nodeNumber  = NODE_NO(info->document);
  1820         -    node->valueLength = len;
         1820  +    node->valueLength = (domLength)len;
  1821   1821       node->nodeValue   = (char*)MALLOC(len);
  1822   1822       memmove(node->nodeValue, s, len);
  1823   1823   
  1824   1824       node->ownerDocument = info->document;
  1825   1825       node->parentNode = parentNode;
  1826   1826       if (parentNode == NULL) {
  1827   1827           if (info->document->rootNode->lastChild) {
................................................................................
  1907   1907                                    (char*) node,
  1908   1908                                    &hnew);
  1909   1909           Tcl_SetHashValue (h, tdomstrdup (XML_GetBase (info->parser)));
  1910   1910           node->nodeFlags |= HAS_BASEURI;
  1911   1911       }
  1912   1912   
  1913   1913       len = strlen(target);
  1914         -    node->targetLength = len;
         1914  +    node->targetLength = (domLength)len;
  1915   1915       node->targetValue  = (char*)MALLOC(len);
  1916   1916       memmove(node->targetValue, target, len);
  1917   1917   
  1918   1918       len = strlen(data);
  1919         -    node->dataLength = len;
         1919  +    node->dataLength = (domLength)len;
  1920   1920       node->dataValue  = (char*)MALLOC(len);
  1921   1921       memmove(node->dataValue, data, len);
  1922   1922   
  1923   1923       node->ownerDocument = info->document;
  1924   1924       node->parentNode = parentNode;
  1925   1925       if (parentNode == NULL) {
  1926   1926           if (info->document->rootNode->lastChild) {
................................................................................
  2023   2023        * Take a copy of the callback script so that arguments may be appended.
  2024   2024        */
  2025   2025       cmdPtr = Tcl_NewStringObj(info->document->extResolver, -1);
  2026   2026       Tcl_IncrRefCount(cmdPtr);
  2027   2027   
  2028   2028       if (base) {
  2029   2029           Tcl_ListObjAppendElement(info->interp, cmdPtr,
  2030         -                                 Tcl_NewStringObj(base, strlen(base)));
         2030  +                                 Tcl_NewStringObj(base, (domLength)strlen(base)));
  2031   2031       } else {
  2032   2032           Tcl_ListObjAppendElement(info->interp, cmdPtr,
  2033   2033                                    Tcl_NewObj());
  2034   2034       }
  2035   2035   
  2036   2036       /* For a document with doctype declaration, the systemId is always
  2037   2037          != NULL. But if the document doesn't have a doctype declaration
  2038   2038          and the user uses -useForeignDTD 1, the externalEntityRefHandler
  2039   2039          will be called with a systemId (and publicId and openEntityNames)
  2040   2040          == NULL. */
  2041   2041       if (systemId) {
  2042   2042           Tcl_ListObjAppendElement(info->interp, cmdPtr,
  2043         -                                 Tcl_NewStringObj(systemId, strlen(systemId)));
         2043  +                                 Tcl_NewStringObj(systemId, (domLength)strlen(systemId)));
  2044   2044       } else {
  2045   2045           Tcl_ListObjAppendElement(info->interp, cmdPtr,
  2046   2046                                    Tcl_NewObj());
  2047   2047       }
  2048   2048   
  2049   2049       if (publicId) {
  2050   2050           Tcl_ListObjAppendElement(info->interp, cmdPtr,
  2051         -                                 Tcl_NewStringObj(publicId, strlen(publicId)));
         2051  +                                 Tcl_NewStringObj(publicId, (domLength)strlen(publicId)));
  2052   2052       } else {
  2053   2053           Tcl_ListObjAppendElement(info->interp, cmdPtr,
  2054   2054                                    Tcl_NewObj());
  2055   2055       }
  2056   2056   
  2057   2057    
  2058   2058       result = Tcl_EvalObjEx (info->interp, cmdPtr, 
................................................................................
  2145   2145                   tcldom_reportErrorLocation (
  2146   2146                       info->interp, 20, 40, XML_GetCurrentLineNumber(extparser),
  2147   2147                       XML_GetCurrentColumnNumber(extparser), xmlstringstart,
  2148   2148                       systemId, XML_GetCurrentByteIndex(extparser),
  2149   2149                       XML_ErrorString(XML_GetErrorCode(extparser))
  2150   2150                       );
  2151   2151               } else {
  2152         -                sprintf(s, "%" TCL_LL_MODIFIER "d",
         2152  +                sprintf(s, "%" TDOM_LS_MODIFIER "d",
  2153   2153                           XML_GetCurrentLineNumber(extparser));
  2154   2154                   Tcl_AppendResult(info->interp, ", referenced in entity \"",
  2155   2155                                    systemId, 
  2156   2156                                    "\" at line ", s, " character ", NULL);
  2157         -                sprintf(s, "%" TCL_LL_MODIFIER "d",
         2157  +                sprintf(s, "%" TDOM_LS_MODIFIER "d",
  2158   2158                           XML_GetCurrentColumnNumber(extparser));
  2159   2159                   Tcl_AppendResult(info->interp, s, NULL);
  2160   2160               }
  2161   2161               keepresult = 1;
  2162   2162               result = 0;
  2163   2163               break;
  2164   2164           case XML_STATUS_SUSPENDED:
................................................................................
  2172   2172           do {
  2173   2173               len = Tcl_Read (chan, buf, sizeof(buf));
  2174   2174               done = len < sizeof(buf);
  2175   2175               status = XML_Parse (extparser, buf, (int)len, done);
  2176   2176               switch (status) {
  2177   2177               case XML_STATUS_ERROR:
  2178   2178                   interpResult = Tcl_GetStringResult(info->interp);
  2179         -                sprintf(s, "%" TCL_LL_MODIFIER "d",
         2179  +                sprintf(s, "%" TDOM_LS_MODIFIER "d",
  2180   2180                           XML_GetCurrentLineNumber(extparser));
  2181   2181                   if (interpResult[0] == '\0') {
  2182   2182                       Tcl_ResetResult (info->interp);
  2183   2183                       Tcl_AppendResult(info->interp, "error \"",
  2184   2184                                        XML_ErrorString(XML_GetErrorCode(extparser)),
  2185   2185                                        "\" in entity \"", systemId,
  2186   2186                                        "\" at line ", s, " character ", NULL);
  2187         -                    sprintf(s, "%" TCL_LL_MODIFIER "d",
         2187  +                    sprintf(s, "%" TDOM_LS_MODIFIER "d",
  2188   2188                               XML_GetCurrentColumnNumber(extparser));
  2189   2189                       Tcl_AppendResult(info->interp, s, NULL);
  2190   2190                   } else {
  2191   2191                       Tcl_AppendResult(info->interp, ", referenced in entity \"",
  2192   2192                                        systemId, 
  2193   2193                                        "\" at line ", s, " character ", NULL);
  2194         -                    sprintf(s, "%" TCL_LL_MODIFIER "d",
         2194  +                    sprintf(s, "%" TDOM_LS_MODIFIER "d",
  2195   2195                               XML_GetCurrentColumnNumber(extparser));
  2196   2196                       Tcl_AppendResult(info->interp, s, NULL);
  2197   2197                   }
  2198   2198                   result = 0;
  2199   2199                   keepresult = 1;
  2200   2200                   done = 1;
  2201   2201                   break;
................................................................................
  2499   2499   /*---------------------------------------------------------------------------
  2500   2500   |   domGetLineColumn
  2501   2501   |
  2502   2502   \--------------------------------------------------------------------------*/
  2503   2503   int
  2504   2504   domGetLineColumn (
  2505   2505       domNode *node,
  2506         -    Tcl_WideInt *line,
  2507         -    Tcl_WideInt *column,
  2508         -    Tcl_WideInt *byteIndex
         2506  +    XML_Size *line,
         2507  +    XML_Size *column,
         2508  +    XML_Index *byteIndex
  2509   2509   )
  2510   2510   {
  2511   2511       char *v;
  2512   2512       domLineColumn  *lc;
  2513   2513   
  2514   2514       *line   = -1;
  2515   2515       *column = -1;
................................................................................
  2560   2560                               "xmlns:xml", &hnew);
  2561   2561       ns = domNewNamespace (parent->ownerDocument, "xml", XML_NAMESPACE);
  2562   2562       attr->nodeType      = ATTRIBUTE_NODE;
  2563   2563       attr->nodeFlags     = IS_NS_NODE;
  2564   2564       attr->namespace     = ns->index;
  2565   2565       attr->nodeName      = (char *)&(h->key);
  2566   2566       attr->parentNode    = parent;
  2567         -    attr->valueLength   = strlen (XML_NAMESPACE);
         2567  +    attr->valueLength   = (domLength)strlen (XML_NAMESPACE);
  2568   2568       attr->nodeValue     = tdomstrdup (XML_NAMESPACE);
  2569   2569       return attr;
  2570   2570   }
  2571   2571   
  2572   2572   
  2573   2573   /*
  2574   2574    *----------------------------------------------------------------------
................................................................................
  3106   3106                   h = Tcl_CreateHashEntry (node->ownerDocument->ids,
  3107   3107                                            attributeValue, &hnew);
  3108   3108                   /* XXX what to do, if hnew = 0  ??? */
  3109   3109                   Tcl_SetHashValue (h, node);
  3110   3110               }
  3111   3111           }
  3112   3112           FREE (attr->nodeValue);
  3113         -        attr->valueLength = strlen(attributeValue);
         3113  +        attr->valueLength = (domLength)strlen(attributeValue);
  3114   3114           attr->nodeValue   = (char*)MALLOC(attr->valueLength+1);
  3115   3115           strcpy(attr->nodeValue, attributeValue);
  3116   3116       } else {
  3117   3117           /*-----------------------------------------------
  3118   3118           |   add a complete new attribute node
  3119   3119           \----------------------------------------------*/
  3120   3120           attr = (domAttrNode*) domAlloc(sizeof(domAttrNode));
................................................................................
  3122   3122           h = Tcl_CreateHashEntry(&HASHTAB(node->ownerDocument,tdom_attrNames),
  3123   3123                                   attributeName, &hnew);
  3124   3124           attr->nodeType    = ATTRIBUTE_NODE;
  3125   3125           attr->nodeFlags   = 0;
  3126   3126           attr->namespace   = 0;
  3127   3127           attr->nodeName    = (char *)&(h->key);
  3128   3128           attr->parentNode  = node;
  3129         -        attr->valueLength = strlen(attributeValue);
         3129  +        attr->valueLength = (domLength)strlen(attributeValue);
  3130   3130           attr->nodeValue   = (char*)MALLOC(attr->valueLength+1);
  3131   3131           strcpy(attr->nodeValue, attributeValue);
  3132   3132   
  3133   3133           if (node->firstAttr) {
  3134   3134               lastAttr = node->firstAttr;
  3135   3135               /* move to the end of the attribute list */
  3136   3136               while (lastAttr->nextSibling) lastAttr = lastAttr->nextSibling;
................................................................................
  3238   3238                   Tcl_DeleteHashEntry (h);
  3239   3239                   h = Tcl_CreateHashEntry (node->ownerDocument->ids,
  3240   3240                                            attributeValue, &hnew);
  3241   3241                   Tcl_SetHashValue (h, node);
  3242   3242               }
  3243   3243           }
  3244   3244           FREE (attr->nodeValue);
  3245         -        attr->valueLength = strlen(attributeValue);
         3245  +        attr->valueLength = (domLength)strlen(attributeValue);
  3246   3246           attr->nodeValue   = (char*)MALLOC(attr->valueLength+1);
  3247   3247           strcpy(attr->nodeValue, attributeValue);
  3248   3248       } else {
  3249   3249           /*--------------------------------------------------------
  3250   3250           |   add a complete new attribute node
  3251   3251           \-------------------------------------------------------*/
  3252   3252           attr = (domAttrNode*) domAlloc(sizeof(domAttrNode));
................................................................................
  3290   3290               attr->namespace = ns->index;
  3291   3291               if (isNSAttr) {
  3292   3292                   attr->nodeFlags = IS_NS_NODE;
  3293   3293               }
  3294   3294           }
  3295   3295           attr->nodeName    = (char *)&(h->key);
  3296   3296           attr->parentNode  = node;
  3297         -        attr->valueLength = strlen(attributeValue);
         3297  +        attr->valueLength = (domLength)strlen(attributeValue);
  3298   3298           attr->nodeValue   = (char*)MALLOC(attr->valueLength+1);
  3299   3299           strcpy(attr->nodeValue, attributeValue);
  3300   3300   
  3301   3301           if (isNSAttr) {
  3302   3302               if (node->firstAttr && (node->firstAttr->nodeFlags & IS_NS_NODE)) {
  3303   3303                   lastAttr = node->firstAttr;
  3304   3304                   while (lastAttr->nextSibling
................................................................................
  4544   4544       h = Tcl_CreateHashEntry(&HASHTAB(node->ownerDocument,tdom_attrNames),
  4545   4545                               Tcl_DStringValue(&dStr), &hnew);
  4546   4546       attr->nodeType    = ATTRIBUTE_NODE;
  4547   4547       attr->nodeFlags   = IS_NS_NODE;
  4548   4548       attr->namespace   = ns->index;
  4549   4549       attr->nodeName    = (char *)&(h->key);
  4550   4550       attr->parentNode  = node;
  4551         -    attr->valueLength = strlen(nsToAdd->uri);
         4551  +    attr->valueLength = (domLength)strlen(nsToAdd->uri);
  4552   4552       attr->nodeValue   = (char*)MALLOC(attr->valueLength+1);
  4553   4553       strcpy(attr->nodeValue, nsToAdd->uri);
  4554   4554   
  4555   4555       lastNSAttr = NULL;
  4556   4556       if (node->firstAttr && (node->firstAttr->nodeFlags & IS_NS_NODE)) {
  4557   4557           lastNSAttr = node->firstAttr;
  4558   4558           while (lastNSAttr->nextSibling
................................................................................
  5328   5328       int               storeLineColumn;
  5329   5329       domLength         textStartLine;
  5330   5330       domLength         textStartColumn;
  5331   5331       domLength         textStartByteIndex;
  5332   5332       int               ignorexmlns;
  5333   5333       int               feedbackAfter;
  5334   5334       Tcl_Obj          *feedbackCmd;
  5335         -    int               nextFeedbackPosition;
         5335  +    XML_Index         nextFeedbackPosition;
  5336   5336       Tcl_Interp       *interp;
  5337   5337       int               activeNSsize;
  5338   5338       int               activeNSpos;
  5339   5339       domActiveNS      *activeNS;
  5340   5340       int               baseURIstackSize;
  5341   5341       int               baseURIstackPos;
  5342   5342       domActiveBaseURI *baseURIstack;
................................................................................
  5472   5472       )
  5473   5473   {
  5474   5474       tdomCmdReadInfo   *info = (tdomCmdReadInfo *) userData;
  5475   5475   
  5476   5476       DispatchPCDATA ((domReadInfo*) info);
  5477   5477       info->cdataSection = 1;
  5478   5478       if (info->storeLineColumn) {
  5479         -        info->textStartLine = XML_GetCurrentLineNumber (info->parser);
  5480         -        info->textStartColumn = XML_GetCurrentColumnNumber (info->parser);
  5481         -        info->textStartByteIndex = XML_GetCurrentByteIndex (info->parser);
         5479  +        info->textStartLine = (domLength)XML_GetCurrentLineNumber (info->parser);
         5480  +        info->textStartColumn = (domLength)XML_GetCurrentColumnNumber (info->parser);
         5481  +        info->textStartByteIndex = (domLength)XML_GetCurrentByteIndex (info->parser);
  5482   5482       }
  5483   5483   }
  5484   5484   
  5485   5485   int
  5486   5486   TclTdomObjCmd (
  5487   5487       ClientData UNUSED(dummy),
  5488   5488       Tcl_Interp *interp,

Changes to generic/dom.h.

    31     31   \--------------------------------------------------------------------------*/
    32     32   
    33     33   #ifndef __DOM_H__
    34     34   #define __DOM_H__
    35     35   
    36     36   #include <tcl.h>
    37     37   #include <stdlib.h>
           38  +#include <stdint.h>
    38     39   #include <string.h>
    39     40   #include <ctype.h>
    40     41   #include <expat.h>
    41     42   #include <domalloc.h>
    42     43   #include <limits.h>
    43     44   
    44     45   /*
................................................................................
   106    107   #else
   107    108   #  define domLength int
   108    109   #  define Tcl_SetDomLengthObj Tcl_SetIntObj
   109    110   #  define domLengthConversion "%d"
   110    111   #  define TCL_SIZE_MODIFIER ""
   111    112   #  define Tcl_GetSizeIntFromObj Tcl_GetIntFromObj
   112    113   #endif
          114  +
          115  +#ifndef TDOM_LS_MODIFIER
          116  +#  ifdef _WIN32
          117  +#    define TDOM_LS_MODIFIER "I64"
          118  +#  else 
          119  +#    define TDOM_LS_MODIFIER "ll"
          120  +#  endif
          121  +#endif
   113    122   
   114    123   /* Since the len argument of XML_Parse() is of type int, parsing of
   115    124    * strings has to be done in chunks anyway for Tcl 9 with its strings
   116    125    * potentially longer than 2 GByte. Because of internal changes in
   117    126    * exapt a chunk size of INT_MAX led to out of memory errors.
   118    127    * (TDOM_PCS = TDOM_PARSE_CHUNK_SIZE) */
   119    128   
................................................................................
   169    178   # define NODE_NO(doc)       ++domUniqueNodeNr
   170    179   # define DOC_NO(doc)        ++domUniqueDocNr
   171    180   #else
   172    181   # define TDomNotThreaded(x)
   173    182   # define TDomThreaded(x)    x
   174    183   # define HASHTAB(doc,tab)   (doc)->tab
   175    184   # define NODE_NO(doc)       ((doc)->nodeCounter)++
   176         -# ifdef _WIN32
   177         -#  define DOC_NO(doc)        (unsigned long long)(doc)
   178         -# else
   179         -#  define DOC_NO(doc)        (unsigned long)(doc)
   180         -# endif
          185  +# define DOC_NO(doc)         (uintptr_t)(doc)
   181    186   #endif /* TCL_THREADS */
   182    187   
   183    188   #define DOC_CMD(s,doc)      sprintf((s), "domDoc%p", (void *)(doc))
   184    189   #define NODE_CMD(s,node)    sprintf((s), "domNode%p", (void *)(node))
   185    190   #define XSLT_CMD(s,doc)     sprintf((s), "XSLTcmd%p", (void *)(doc))
   186    191   
   187    192   #define XML_NAMESPACE "http://www.w3.org/XML/1998/namespace"
................................................................................
   540    545   |
   541    546   \-------------------------------------------------------------------------*/
   542    547   typedef struct domDocument {
   543    548   
   544    549       domNodeType       nodeType  : 8;
   545    550       domDocFlags       nodeFlags : 8;
   546    551       domNameSpaceIndex dummy     : 16;
   547         -#ifdef _WIN32
   548         -    unsigned long long documentNumber;
   549         -#else
   550         -    unsigned long     documentNumber;
   551         -#endif
          552  +    uintptr_t         documentNumber;
   552    553       struct domNode   *documentElement;
   553    554       struct domNode   *fragments;
   554    555   #ifdef TCL_THREADS
   555    556       struct domNode   *deletedNodes;
   556    557   #endif
   557    558       struct domNS    **namespaces;
   558    559       int               nsptr;
................................................................................
   631    632   
   632    633   /*--------------------------------------------------------------------------
   633    634   |   domLineColumn
   634    635   |
   635    636   \-------------------------------------------------------------------------*/
   636    637   typedef struct domLineColumn {
   637    638   
   638         -    Tcl_WideInt  line;
   639         -    Tcl_WideInt  column;
   640         -    Tcl_WideInt  byteIndex;
          639  +    XML_Size  line;
          640  +    XML_Size  column;
          641  +    XML_Index  byteIndex;
   641    642   
   642    643   } domLineColumn;
   643    644   
   644    645   typedef struct {
   645    646       int  errorCode;
   646         -    Tcl_WideInt errorLine;
   647         -    Tcl_WideInt errorColumn;
   648         -    Tcl_WideInt byteIndex;
          647  +    XML_Size errorLine;
          648  +    XML_Size errorColumn;
          649  +    XML_Index byteIndex;
   649    650   } domParseForestErrorData;
   650    651   
   651    652   
   652    653   /*--------------------------------------------------------------------------
   653    654   |   domNode
   654    655   |
   655    656   \-------------------------------------------------------------------------*/
................................................................................
   888    889                                         const char *prefix, const char *namespaceURI);
   889    890   const char *   domLookupPrefixWithMappings (domNode *node, const char *prefix,
   890    891                                               char **prefixMappings);
   891    892   domNS *        domLookupURI     (domNode *node, char *uri);
   892    893   domNS *        domGetNamespaceByIndex (domDocument *doc, unsigned int nsIndex);
   893    894   domNS *        domNewNamespace (domDocument *doc, const char *prefix,
   894    895                                   const char *namespaceURI);
   895         -int            domGetLineColumn (domNode *node, Tcl_WideInt *line,
   896         -                                 Tcl_WideInt *column, Tcl_WideInt *byteIndex);
          896  +int            domGetLineColumn (domNode *node, XML_Size *line,
          897  +                                 XML_Size *column, XML_Index *byteIndex);
   897    898   
   898    899   int            domXPointerChild (domNode * node, int all, int instance, domNodeType type,
   899    900                                    char *element, char *attrName, char *attrValue,
   900    901                                    domLength attrLen, domAddCallback addCallback,
   901    902                                    void * clientData);
   902    903   
   903    904   int            domXPointerDescendant (domNode * node, int all, int instance,

Changes to generic/domhtml.c.

  2602   2602                   |   allocate new TEXT node
  2603   2603                   \-------------------------------------------------------*/
  2604   2604                   tnode = (domTextNode*) domAlloc(sizeof(domTextNode));
  2605   2605                   memset(tnode, 0, sizeof(domTextNode));
  2606   2606                   tnode->nodeType    = TEXT_NODE;
  2607   2607                   tnode->ownerDocument = doc;
  2608   2608                   tnode->nodeNumber  = NODE_NO(doc);
  2609         -                tnode->valueLength = (x - start);
         2609  +                tnode->valueLength = (domLength)(x - start);
  2610   2610                   tnode->nodeValue   = (char*)MALLOC((x - start)+1);
  2611   2611                   memmove(tnode->nodeValue, start, (x - start));
  2612   2612                   *(tnode->nodeValue + (x - start)) = 0;
  2613   2613                   DBG(fprintf(stderr, "New text node: '%s'\n", tnode->nodeValue);)
  2614   2614                   if (ampersandSeen) {
  2615   2615                       TranslateEntityRefs (tnode);
  2616   2616                   }
................................................................................
  2631   2631               \-----------------------------------------------------------*/
  2632   2632               x += 2;
  2633   2633               while ((c=*x)!=0 && c!='>' && c!='<' && !SPACE(c) ) {
  2634   2634                   *x = tolower(c);
  2635   2635                   x++;
  2636   2636               }
  2637   2637               if (c==0) {
  2638         -                RetError("Missing \">\"",(start-html) );
         2638  +                RetError("Missing \">\"",(domLength)(start-html) );
  2639   2639               }
  2640   2640               if ( (x-start)==2) {
  2641         -                RetError("Null markup name",(start-html) );
         2641  +                RetError("Null markup name",(domLength)(start-html) );
  2642   2642               }
  2643   2643               *x = '\0'; /* temporarily terminate the string */
  2644   2644   
  2645   2645   
  2646   2646               /*----------------------------------------------------------------------
  2647   2647               |   check for tags which could optional be close 
  2648   2648               |   like <option>...</option>
................................................................................
  2755   2755                                   parent_node = node->parentNode;
  2756   2756                                   pn = (char*)node->nodeName;
  2757   2757                                   break; 
  2758   2758                               }
  2759   2759                           }
  2760   2760                           sprintf(tmp, "Unterminated element '%s' (within '%s')", start+2, pn);
  2761   2761                           *x = c;  /* remove temporarily termination */
  2762         -                        RetError(tmp,(x - html));
         2762  +                        RetError(tmp,(domLength)(x - html));
  2763   2763                       }
  2764   2764                       break;
  2765   2765                   }
  2766   2766                   
  2767   2767                   /* move up */
  2768   2768                   node = parent_node;
  2769   2769                   parent_node = NULL;
................................................................................
  2777   2777               }
  2778   2778               if (*x=='>') {
  2779   2779                   x++;
  2780   2780               } else {
  2781   2781                   if (*x == '<') {
  2782   2782                       /* start of new tag, ends closing tag */
  2783   2783                   } else {
  2784         -                    RetError("Missing \">\"",(x - html)-1);
         2784  +                    RetError("Missing \">\"",(domLength)(x - html)-1);
  2785   2785                   }
  2786   2786               }            
  2787   2787               if (parent_node == NULL) {
  2788   2788                   /* we return to main node and so finished parsing */
  2789   2789                   return TCL_OK;
  2790   2790               }
  2791   2791               continue;
................................................................................
  2809   2809                           \---------------------------------------------------*/
  2810   2810                           tnode = (domTextNode*) domAlloc(sizeof(domTextNode));
  2811   2811                           memset(tnode, 0, sizeof(domTextNode));
  2812   2812                           tnode->nodeType      = COMMENT_NODE;
  2813   2813                           tnode->ownerDocument = doc;
  2814   2814                           tnode->nodeNumber    = NODE_NO(doc);
  2815   2815                           tnode->parentNode    = parent_node;
  2816         -                        tnode->valueLength   = x - start - 4;
         2816  +                        tnode->valueLength   = (domLength)(x - start - 4);
  2817   2817                           tnode->nodeValue     = (char*)MALLOC(tnode->valueLength+1);
  2818   2818                           memmove(tnode->nodeValue, start+4, tnode->valueLength);
  2819   2819                           *(tnode->nodeValue + tnode->valueLength) = 0;
  2820   2820                           if (parent_node == NULL) {
  2821   2821                               if (doc->rootNode->lastChild) {
  2822   2822                                   tnode->previousSibling = 
  2823   2823                                       doc->rootNode->lastChild;
................................................................................
  2834   2834                                   parent_node->lastChild = (domNode*)tnode;
  2835   2835                               } else {
  2836   2836                                   parent_node->firstChild = parent_node->lastChild = (domNode*)tnode;
  2837   2837                               }
  2838   2838                           }
  2839   2839                           x += 3;
  2840   2840                       } else {
  2841         -                        RetError("Unterminated comment",(start-html));
         2841  +                        RetError("Unterminated comment",(domLength)(start-html));
  2842   2842                       }
  2843   2843                       continue;
  2844   2844   
  2845   2845                   } else if (TU(x[1])=='D' && TU(x[2])=='O' &&
  2846   2846                              TU(x[3])=='C' && TU(x[4])=='T' &&
  2847   2847                              TU(x[5])=='Y' && TU(x[6])=='P' && TU(x[7])=='E' ) {
  2848   2848                       /*--------------------------------------------------------
................................................................................
  2860   2860                           } else {
  2861   2861                               x++;
  2862   2862                           }
  2863   2863                       }
  2864   2864                       if (*x) {
  2865   2865                           x++;
  2866   2866                       } else {
  2867         -                        RetError("Unterminated DOCTYPE definition",(start-html));
         2867  +                        RetError("Unterminated DOCTYPE definition",(domLength)(start-html));
  2868   2868                       }
  2869   2869                       continue;
  2870   2870   
  2871   2871                   } else if (x[1]=='[' && x[2]=='C' &&
  2872   2872                              x[3]=='D' && x[4]=='A' &&
  2873   2873                              x[5]=='T' && x[6]=='A' && x[7]=='[' ) {
  2874   2874                       /*--------------------------------------------------------
................................................................................
  2887   2887                               \---------------------------------------------------*/
  2888   2888                               tnode = (domTextNode*) domAlloc(sizeof(domTextNode));
  2889   2889                               memset(tnode, 0, sizeof(domTextNode));
  2890   2890                               tnode->nodeType      = TEXT_NODE;
  2891   2891                               tnode->ownerDocument = doc;
  2892   2892                               tnode->nodeNumber    = NODE_NO(doc);
  2893   2893                               tnode->parentNode    = parent_node;
  2894         -                            tnode->valueLength   = (x - start);
         2894  +                            tnode->valueLength   = (domLength)(x - start);
  2895   2895                               tnode->nodeValue     = (char*)MALLOC((x - start)+1);
  2896   2896                               memmove(tnode->nodeValue, start, (x - start));
  2897   2897                               *(tnode->nodeValue + (x - start)) = 0;
  2898   2898                               if (parent_node->firstChild)  {
  2899   2899                                   parent_node->lastChild->nextSibling = (domNode*)tnode;
  2900   2900                                   tnode->previousSibling = parent_node->lastChild;
  2901   2901                                   parent_node->lastChild = (domNode*)tnode;
  2902   2902                               } else {
  2903   2903                                   parent_node->firstChild = parent_node->lastChild = (domNode*)tnode;
  2904   2904                               }
  2905   2905                           }
  2906   2906                           x += 3;
  2907   2907                       } else {
  2908         -                        RetError("Unterminated CDATA definition",(start-html) );
         2908  +                        RetError("Unterminated CDATA definition",(domLength)(start-html) );
  2909   2909                       }
  2910   2910                       continue;
  2911   2911                    } else {
  2912         -                        RetError("Incorrect <!... tag",(start-html) );
         2912  +                        RetError("Incorrect <!... tag",(domLength)(start-html) );
  2913   2913                    }
  2914   2914   
  2915   2915               } else if (*x=='?') {
  2916   2916                   /*--------------------------------------------------------
  2917   2917                   |   read over a processing instructions(PI) / XMLDecl
  2918   2918                   \-------------------------------------------------------*/
  2919   2919                   x++;
................................................................................
  2940   2940                       piSep = start;
  2941   2941                       while ( (c=*piSep)!=0 && !SPACE(c) &&
  2942   2942                               (c!='?' || piSep[1]!='>')) {
  2943   2943                            piSep++;
  2944   2944                       }
  2945   2945                       *piSep = '\0'; /* temporarily terminate the string */
  2946   2946   
  2947         -                    pinode->targetLength = strlen(start);
         2947  +                    pinode->targetLength = (domLength)strlen(start);
  2948   2948                       pinode->targetValue  = (char*)MALLOC(pinode->targetLength);
  2949   2949                       memmove(pinode->targetValue, start, pinode->targetLength);
  2950   2950   
  2951   2951                       *piSep = c;  /* remove temporarily termination */
  2952   2952   
  2953   2953                       /*-------------------------------------------------
  2954   2954                       |   extract PI data
  2955   2955                       \------------------------------------------------*/
  2956   2956                       while (SPACE(*piSep)) {
  2957   2957                           piSep++;
  2958   2958                       }
  2959         -                    pinode->dataLength = x - piSep;
         2959  +                    pinode->dataLength = (domLength)(x - piSep);
  2960   2960                       pinode->dataValue  = (char*)MALLOC(pinode->dataLength);
  2961   2961                       memmove(pinode->dataValue, piSep, pinode->dataLength);
  2962   2962   
  2963   2963                       if (parent_node == NULL) {
  2964   2964                           if (doc->rootNode->lastChild) {
  2965   2965                               pinode->previousSibling = doc->rootNode->lastChild;
  2966   2966                               doc->rootNode->lastChild->nextSibling 
................................................................................
  2976   2976                               parent_node->lastChild = (domNode*)pinode;
  2977   2977                           } else {
  2978   2978                               parent_node->firstChild = parent_node->lastChild = (domNode*)pinode;
  2979   2979                           }
  2980   2980                       }
  2981   2981                       x += 2;
  2982   2982                   } else {
  2983         -                    RetError("Unterminated processing instruction(PI)",(start-html) );
         2983  +                    RetError("Unterminated processing instruction(PI)",(domLength)(start-html));
  2984   2984                   }
  2985   2985                   continue;
  2986   2986               }
  2987   2987   
  2988   2988   
  2989   2989               /*----------------------------------------------------------------
  2990   2990               |   new tag/element
................................................................................
  3011   3011                   *x = c;
  3012   3012                   if (!rc) {
  3013   3013                       goto readText;
  3014   3014                   }
  3015   3015               }
  3016   3016               hasContent = 1;
  3017   3017               if (c==0) {
  3018         -                RetError("Missing \">\"",(start-html) );
         3018  +                RetError("Missing \">\"",(domLength)(start-html));
  3019   3019               }
  3020   3020               if ( (x-start)==1) {
  3021         -                RetError("Null markup name",(start-html) );
         3021  +                RetError("Null markup name",(domLength)(start-html));
  3022   3022               }
  3023   3023               DBG(fprintf(stderr, "\nnew tag '%70.70s...' \n", start);)
  3024   3024               *x = '\0'; /* temporarily terminate the string */
  3025   3025   
  3026   3026   
  3027   3027               /*-----------------------------------------------------------
  3028   3028               |   check, whether new starting element close another
................................................................................
  3111   3111                   char *ArgVal = NULL;
  3112   3112                   domLength nArgVal = 0;
  3113   3113   
  3114   3114                   while ((c=*x)!=0 && c!='=' && c!='>' && !SPACE(c) ) {
  3115   3115                       *x = tolower(c);
  3116   3116                       x++;
  3117   3117                   }
  3118         -                nArgName = x - ArgName;
         3118  +                nArgName = (domLength)(x - ArgName);
  3119   3119                   while (SPACE(*x)) {
  3120   3120                       x++;
  3121   3121                   }
  3122   3122                   if (*x == '=') {
  3123   3123                   
  3124   3124                       /* attribute with value, like width="1234" */
  3125   3125                       
................................................................................
  3138   3138                           x++;
  3139   3139                           ArgVal = x;
  3140   3140                           ampersandSeen = 0;
  3141   3141                           while ((c=*x)!=0 && c!=cDelim) {
  3142   3142                               if (c=='&') ampersandSeen = 1;
  3143   3143                               x++;
  3144   3144                           }
  3145         -                        nArgVal = x - ArgVal;
         3145  +                        nArgVal = (domLength)(x - ArgVal);
  3146   3146                           if (c==0) {
  3147         -                            RetError("Unterminated string",(ArgVal - html - 1) );
         3147  +                            RetError("Unterminated string",(domLength)(ArgVal - html - 1));
  3148   3148                           } else {
  3149   3149                               x++;
  3150   3150                           }
  3151   3151                       } else if (c!=0 && c!='>') {
  3152   3152                           ArgVal = x;
  3153   3153                           while ((c=*x)!=0 && c!='>' && !SPACE(c)) {
  3154   3154                               if (c=='&') ampersandSeen = 1;
  3155   3155                               x++;
  3156   3156                           }
  3157   3157                           if (c==0) {
  3158         -                            RetError("Missing \">\"",(start-html));
         3158  +                            RetError("Missing \">\"",(domLength)(start-html));
  3159   3159                           }
  3160         -                        nArgVal = x - ArgVal;
         3160  +                        nArgVal = (domLength)(x - ArgVal);
  3161   3161                       }
  3162   3162                   } else {
  3163   3163                       /* attribute without value, like 'nowrap' */
  3164   3164                       savedChar = *(ArgName + nArgName);
  3165   3165                       *(ArgName + nArgName) = '\0'; /* terminate arg name */
  3166   3166                       ArgVal = ArgName;
  3167   3167                       nArgVal = nArgName;
................................................................................
  3236   3236                              !strcmp(node->nodeName,"source"))   {hasContent = 0;} break; /*html5*/
  3237   3237               }
  3238   3238   
  3239   3239               if (*x=='/') {
  3240   3240                   hasContent = 0;
  3241   3241                   x++;
  3242   3242                   if (*x!='>') {
  3243         -                    RetError("Syntax Error",(x - html - 1) );
         3243  +                    RetError("Syntax Error",(domLength)(x - html - 1));
  3244   3244                   }
  3245   3245               }
  3246   3246               if (*x=='>') {
  3247   3247                   x++;
  3248   3248               }
  3249   3249               DBG(fprintf(stderr, "%d: new node '%s' hasContent=%d \n", getDeep(node), node->nodeName, hasContent);)
  3250   3250   
................................................................................
  3283   3283                       \---------------------------------------------------*/
  3284   3284                       tnode = (domTextNode*) domAlloc(sizeof(domTextNode));
  3285   3285                       memset(tnode, 0, sizeof(domTextNode));
  3286   3286                       tnode->nodeType      = TEXT_NODE;
  3287   3287                       tnode->ownerDocument = doc;
  3288   3288                       tnode->nodeNumber    = NODE_NO(doc);
  3289   3289                       tnode->parentNode    = node;
  3290         -                    tnode->valueLength   = (x - start);
         3290  +                    tnode->valueLength   = (domLength)(x - start);
  3291   3291                       tnode->nodeValue     = (char*)MALLOC((x - start)+1);
  3292   3292                       memmove(tnode->nodeValue, start, (x - start));
  3293   3293                       *(tnode->nodeValue + (x - start)) = 0;
  3294   3294                       if (node->firstChild)  {
  3295   3295                           node->lastChild->nextSibling = (domNode*)tnode;
  3296   3296                           tnode->previousSibling = node->lastChild;
  3297   3297                           node->lastChild = (domNode*)tnode;
................................................................................
  3343   3343       if (parent_node == NULL) {
  3344   3344           /* we return to main node and so finished parsing */
  3345   3345           return TCL_OK;
  3346   3346       }
  3347   3347       if (forest && parent_node == parent) {
  3348   3348           return TCL_OK;
  3349   3349       }
  3350         -    RetError("Unexpected end",(x - html) );
         3350  +    RetError("Unexpected end",(domLength)(x - html));
  3351   3351   
  3352   3352   } /* HTML_SimpleParse */
  3353   3353   
  3354   3354   
  3355   3355   /*----------------------------------------------------------------------------
  3356   3356   |   HTML_SimpleParseDocument
  3357   3357   |

Changes to generic/domjson.c.

   371    371       } else if (c == '"') {
   372    372           /* Parse string */
   373    373           j = jsonParseString (json, i, jparse);
   374    374           rc(j);
   375    375           if (jparse->len && jparse->buf[0]) {
   376    376               DBG(fprintf(stderr, "New unescaped text node '%s'\n", jparse->buf));
   377    377               newTextNode = domNewTextNode (parent->ownerDocument,
   378         -                                          jparse->buf, strlen(jparse->buf),
          378  +                                          jparse->buf, (domLength)strlen(jparse->buf),
   379    379                                             TEXT_NODE);
   380    380               domAppendChild (parent, (domNode *) newTextNode);
   381    381           } else {
   382    382               DBG(save = json[j];json[j] = '\0';fprintf(stderr, "New text node '%s'\n", &json[i+1]);json[j] = save;);
   383    383               newTextNode = domNewTextNode (parent->ownerDocument,
   384    384                                             &json[i+1], j-i-1, TEXT_NODE);
   385    385               domAppendChild (parent, (domNode *) newTextNode);

Changes to generic/domxpath.c.

   417    417       rs->type = BoolResult;
   418    418       rs->intvalue = (i ? 1 : 0);
   419    419   }
   420    420   void rsSetString ( xpathResultSet *rs, const char *s) {
   421    421       rs->type = StringResult;
   422    422       if (s) {
   423    423           rs->string     = tdomstrdup(s);
   424         -        rs->string_len = strlen(s);
          424  +        rs->string_len = (domLength)strlen(s);
   425    425       } else {
   426    426           rs->string     = tdomstrdup("");
   427    427           rs->string_len = 0;
   428    428       }
   429    429       rs->nr_nodes = 0;
   430    430   }
   431    431   
................................................................................
  2792   2792               if (IS_NAN (rs->realvalue)) return tdomstrdup ("NaN");
  2793   2793               else if (IS_INF (rs->realvalue)) {
  2794   2794                   if (IS_INF (rs->realvalue) == 1) return tdomstrdup ("Infinity");
  2795   2795                   else                             return tdomstrdup ("-Infinity");
  2796   2796               }
  2797   2797               sprintf(tmp, "%g", rs->realvalue);
  2798   2798               /* strip trailing 0 and . */
  2799         -            len = strlen(tmp);
         2799  +            len = (domLength)strlen(tmp);
  2800   2800               for (; (len > 0) && (tmp[len-1] == '0'); len--) tmp[len-1] = '\0';
  2801   2801               if ((len > 0) && (tmp[len-1] == '.'))   tmp[len-1] = '\0';
  2802   2802               return (tdomstrdup(tmp));
  2803   2803               
  2804   2804           case NaNResult:
  2805   2805               return tdomstrdup ("NaN");
  2806   2806   
................................................................................
  3383   3383               if (pfrom != NULL) {
  3384   3384                   rsSetString (result, pfrom + strlen (rightStr));
  3385   3385               } else {
  3386   3386                   rsSetString (result, "");
  3387   3387               }
  3388   3388           } else {
  3389   3389               /* starts-with */
  3390         -            i = strlen(rightStr);
         3390  +            i = (domLength)strlen(rightStr);
  3391   3391               if(strncmp(leftStr, rightStr, i)==0) {
  3392   3392                   rsSetBool (result, 1);
  3393   3393               } else {
  3394   3394                   rsSetBool (result, 0);
  3395   3395               }
  3396   3396           }
  3397   3397           xpathRSFree (&leftResult);
................................................................................
  3419   3419                   return rc;
  3420   3420               }
  3421   3421               *docOrder = savedDocOrder;
  3422   3422   
  3423   3423               leftStr  = xpathFuncString( &leftResult  );
  3424   3424               pto = (char*)REALLOC(pto, 1+len+strlen(leftStr));
  3425   3425               memmove(pto + len, leftStr, strlen(leftStr));
  3426         -            len += strlen(leftStr);
         3426  +            len += (domLength)strlen(leftStr);
  3427   3427               *(pto + len) = '\0';
  3428   3428               xpathRSFree( &leftResult );
  3429   3429               FREE(leftStr);
  3430   3430               nextStep = nextStep->next;
  3431   3431           }
  3432   3432           rsSetString (result, pto);
  3433   3433           FREE(pto);
................................................................................
  5994   5994               sprintf(step, "/%s[%d]", nTest, nodeIndex);
  5995   5995           }
  5996   5996           break;
  5997   5997   
  5998   5998       default:
  5999   5999           break;
  6000   6000       }
  6001         -    len = strlen(step);
         6001  +    len = (domLength)strlen(step);
  6002   6002       if ( (len + *xpathLen) > *xpathAllocated ) {
  6003   6003           *xpathAllocated = *xpathAllocated * 2;
  6004   6004           *xpath = REALLOC(*xpath, *xpathAllocated + 1);
  6005   6005       }
  6006   6006       strcpy( *xpath + *xpathLen, step);
  6007   6007       *xpathLen += len;
  6008   6008   

Changes to generic/domxslt.c.

   538    538       domNode * node,
   539    539       char    * str,
   540    540       char   ** errMsg)
   541    541   {
   542    542       Tcl_DString dStr;
   543    543       char buffer[1024];
   544    544       const char *baseURI;
   545         -    Tcl_WideInt line, column, byteIndex;
          545  +    XML_Size line, column;
          546  +    XML_Index byteIndex;
   546    547   
   547    548       Tcl_DStringInit (&dStr);
   548    549       baseURI = findBaseURI (node);
   549    550       if (baseURI) {
   550    551           Tcl_DStringAppend (&dStr, "In entity ", 10);
   551    552           Tcl_DStringAppend (&dStr, baseURI, -1);
   552    553       }
   553    554       if (node->nodeFlags & HAS_LINE_COLUMN) {
   554    555           domGetLineColumn (node, &line, &column, &byteIndex);
   555         -        sprintf (buffer, " at line %" TCL_LL_MODIFIER "d, column %"
   556         -                 TCL_LL_MODIFIER "d:\n", line, column);
          556  +        sprintf (buffer, " at line %" TDOM_LS_MODIFIER "d, column %"
          557  +                 TDOM_LS_MODIFIER "d:\n", line, column);
   557    558           Tcl_DStringAppend (&dStr, buffer, -1);
   558    559           Tcl_DStringAppend (&dStr, str, -1);
   559    560       } else {
   560    561           if (baseURI) Tcl_DStringAppend (&dStr, ": ", 2);
   561    562           Tcl_DStringAppend (&dStr, str, -1);
   562    563       }
   563    564       if (*errMsg) FREE (*errMsg);
................................................................................
   948    949             { "IV", "iv",    4, },
   949    950             { "I" , "i" ,    1  }
   950    951       };
   951    952   
   952    953       switch (f->tokens[*useFormatToken].type) {
   953    954       case latin_number:
   954    955           sprintf (tmp, "%" TCL_SIZE_MODIFIER "d", value);
   955         -        fulllen = len = strlen (tmp);
          956  +        fulllen = len = (domLength)strlen (tmp);
   956    957           if (f->tokens[*useFormatToken].minlength > fulllen) {
   957    958               fulllen = f->tokens[*useFormatToken].minlength;
   958    959           }
   959    960           if (groupingSeparator) {
   960         -            gslen = strlen (groupingSeparator);
          961  +            gslen = (domLength)strlen (groupingSeparator);
   961    962               Tcl_DStringInit (&tmp1);
   962    963               if (len < f->tokens[*useFormatToken].minlength) {
   963    964                   for (i = 0; i <  f->tokens[*useFormatToken].minlength - len; i++) {
   964    965                       Tcl_DStringAppend (&tmp1, "0", 1);
   965    966                   }
   966    967               }
   967    968               Tcl_DStringAppend (&tmp1, tmp, len);
................................................................................
  1068   1069           }
  1069   1070           break;
  1070   1071   
  1071   1072       default:
  1072   1073           sprintf (tmp, "%" TCL_SIZE_MODIFIER "d", value);
  1073   1074           break;
  1074   1075       }
  1075         -    len = strlen (tmp);
         1076  +    len = (domLength)strlen (tmp);
  1076   1077       Tcl_DStringAppend (str, tmp, len);
  1077   1078    appendSeperator:
  1078   1079       if (addSeparater) {
  1079   1080           if (f->tokens[*useFormatToken].sepStart) {
  1080   1081               Tcl_DStringAppend (str, f->tokens[*useFormatToken].sepStart,
  1081   1082                                  f->tokens[*useFormatToken].sepLen);
  1082   1083               *useFormatToken += 1;
................................................................................
  1388   1389           }
  1389   1390       }
  1390   1391       
  1391   1392       DBG(fprintf(stderr,"normal part nZero=%d i=%d glen=%d\n", nZero, i, gLen);)
  1392   1393       /* fill in grouping char */
  1393   1394       if (gLen > 0) {
  1394   1395           sprintf(stmp,"%0*d", nZero, i);
  1395         -        l = strlen (stmp);
         1396  +        l = (domLength)strlen (stmp);
  1396   1397           for (j = 0; j < l; j++) {
  1397   1398               t = df->zeroDigit + stmp[j] - 48;
  1398   1399               Tcl_DStringAppend (&s, (char*)&t, sizeof (Tcl_UniChar));
  1399   1400           }
  1400   1401           DBG(
  1401   1402               Tcl_DStringInit(&dbStr);
  1402   1403               fprintf (stderr, "'%s' ---> ..\n", stmp);
................................................................................
  1433   1434               Tcl_DStringInit (&dbStr);
  1434   1435               fprintf(stderr,"n='%s'\n", 
  1435   1436                       Tcl_UniCharToUtfDString (n, Tcl_UniCharLen (n), &dbStr));
  1436   1437               Tcl_DStringFree (&dbStr); 
  1437   1438           )
  1438   1439       } else {
  1439   1440           sprintf(stmp,"%0*d", nZero, i);
  1440         -        l = strlen (stmp);
         1441  +        l = (domLength)strlen (stmp);
  1441   1442           for (j = 0; j < l; j++) {
  1442   1443               n[j] = df->zeroDigit + (int) stmp[j] - 48;
  1443   1444           }
  1444   1445           n[l] = '\0';
  1445   1446           DBG(
  1446   1447               Tcl_DStringInit (&dbStr);
  1447   1448               fprintf(stderr,"n='%s'\n", 
................................................................................
  1448   1449                       Tcl_UniCharToUtfDString(n, Tcl_UniCharLen (n), &dbStr));
  1449   1450               Tcl_DStringFree (&dbStr);
  1450   1451           )
  1451   1452       }
  1452   1453       DBG(fprintf(stderr, "number=%f fHash=%d fZero=%d \n", number, fHash, 
  1453   1454                   fZero);)
  1454   1455       if ((fHash+fZero) > 0) {
  1455         -        l = strlen(ftmp);
         1456  +        l = (domLength)strlen(ftmp);
  1456   1457           while (l>0 && fHash>0) {   /* strip not need 0's */
  1457   1458               if (ftmp[l-1] == '0') {
  1458   1459                   ftmp[l-1]='\0'; l--; fHash--;
  1459   1460               } else {
  1460   1461                   break;
  1461   1462               }
  1462   1463           }
................................................................................
  1514   1515       tstr = Tcl_UniCharToUtfDString(
  1515   1516           (Tcl_UniChar*)Tcl_DStringValue (&s),
  1516   1517           Tcl_UniCharLen((Tcl_UniChar*)Tcl_DStringValue(&s)), &dStr
  1517   1518           );
  1518   1519       *resultStr = tdomstrdup(tstr);
  1519   1520       Tcl_DStringFree (&dStr);
  1520   1521       Tcl_DStringFree (&s);
  1521         -    *resultLen = strlen(*resultStr);
         1522  +    *resultLen = (domLength)strlen(*resultStr);
  1522   1523       return 0;
  1523   1524   
  1524   1525    xsltFormatNumberError:
  1525   1526       Tcl_DStringFree (&dStr);
  1526   1527       Tcl_DStringFree (&s);
  1527   1528       return -1;
  1528   1529   }
................................................................................
  4418   4419                               domCopyTo (rs.nodes[i], xs->lastNode, 1);
  4419   4420                           }
  4420   4421                       }
  4421   4422                   }
  4422   4423               } else {
  4423   4424                   str = xpathFuncString( &rs );
  4424   4425                   TRACE1("copyOf: xpathString='%s' \n", str);
  4425         -                domAppendNewTextNode(xs->lastNode, str, strlen(str),
         4426  +                domAppendNewTextNode(xs->lastNode, str, (domLength)strlen(str),
  4426   4427                                        TEXT_NODE, 0);
  4427   4428                   FREE(str);
  4428   4429               }
  4429   4430               xpathRSFree( &rs );
  4430   4431               break;
  4431   4432   
  4432   4433           case decimalFormat: 
................................................................................
  4757   4758                   FREE(str);
  4758   4759                   FREE(str2);
  4759   4760                   return -1;
  4760   4761               }
  4761   4762               xs->lastNode = savedLastNode;
  4762   4763               
  4763   4764               n = (domNode*)domNewProcessingInstructionNode( 
  4764         -                xs->resultDoc, str2, strlen(str2), str, len);
         4765  +                xs->resultDoc, str2, (domLength)strlen(str2), str, len);
  4765   4766               domAppendChild(xs->lastNode, n);
  4766   4767               domDeleteNode (fragmentNode, NULL, NULL);
  4767   4768               FREE(str2);
  4768   4769               FREE(str);
  4769   4770               break;
  4770   4771   
  4771   4772           case sort:
................................................................................
  4804   4805                   TRACE1("valueOf: str='%s' \n", str);
  4805   4806                   rc = evalXPath(xs, context, currentNode, currentPos, str,
  4806   4807                                  &rs, errMsg);
  4807   4808                   CHECK_RC;
  4808   4809                   DBG(rsPrint(&rs));
  4809   4810                   str = xpathFuncString( &rs );
  4810   4811                   TRACE1("valueOf: xpathString='%s' \n", str);
  4811         -                domAppendNewTextNode(xs->lastNode, str, strlen(str),
         4812  +                domAppendNewTextNode(xs->lastNode, str, (domLength)strlen(str),
  4812   4813                                        TEXT_NODE, disableEsc);
  4813   4814                   xpathRSFree( &rs );
  4814   4815                   FREE(str);
  4815   4816               } else {
  4816   4817                   reportError (actionNode, "xsl:value-of must have a"
  4817   4818                                " \"select\" attribute!", errMsg);
  4818   4819                   return -1;
................................................................................
  5716   5717       )
  5717   5718       
  5718   5719       cmdPtr = Tcl_NewStringObj (xsltDoc->extResolver, -1);
  5719   5720       Tcl_IncrRefCount (cmdPtr);
  5720   5721       if (baseURI) {
  5721   5722           Tcl_ListObjAppendElement(interp, cmdPtr,
  5722   5723                                    Tcl_NewStringObj (baseURI,
  5723         -                                                   strlen(baseURI)));
         5724  +                                                   (domLength)strlen(baseURI)));
  5724   5725       } else {
  5725   5726           Tcl_ListObjAppendElement(interp, cmdPtr,
  5726   5727                                    Tcl_NewStringObj ("", 0));
  5727   5728       }
  5728   5729       Tcl_ListObjAppendElement (interp, cmdPtr, (href ?
  5729         -                              Tcl_NewStringObj (href, strlen (href))
         5730  +                              Tcl_NewStringObj (href, (domLength)strlen (href))
  5730   5731                                 : Tcl_NewStringObj ("", 0)));
  5731   5732       Tcl_ListObjAppendElement (interp, cmdPtr,
  5732   5733                                 Tcl_NewStringObj ("", 0));
  5733   5734   
  5734   5735       result = Tcl_EvalObjEx (interp, cmdPtr, TCL_EVAL_DIRECT | TCL_EVAL_GLOBAL);
  5735   5736   
  5736   5737       Tcl_DecrRefCount (cmdPtr);
................................................................................
  5823   5824           Tcl_DStringAppend (&dStr, "Error while processing external entity \"",
  5824   5825                              -1);
  5825   5826           Tcl_DStringAppend (&dStr, href, -1);
  5826   5827           Tcl_DStringAppend (&dStr, "\":\n", -1);
  5827   5828           str = Tcl_GetStringResult (interp);
  5828   5829           if (str[0] == '\0') {
  5829   5830               Tcl_DStringAppend (&dStr, "At line ", -1);
  5830         -            sprintf (s, "%" TCL_LL_MODIFIER "d",
         5831  +            sprintf (s, "%" TDOM_LS_MODIFIER "d",
  5831   5832                        XML_GetCurrentLineNumber (parser));
  5832   5833               Tcl_DStringAppend (&dStr, s, -1);
  5833   5834               Tcl_DStringAppend (&dStr, " character ", -1);
  5834         -            sprintf (s, "%" TCL_LL_MODIFIER "d",
         5835  +            sprintf (s, "%" TDOM_LS_MODIFIER "d",
  5835   5836                        XML_GetCurrentColumnNumber (parser));
  5836   5837               Tcl_DStringAppend (&dStr, s, -1);
  5837   5838               Tcl_DStringAppend (&dStr, ": ", 2);
  5838   5839               Tcl_DStringAppend (&dStr, 
  5839   5840                                  XML_ErrorString (XML_GetErrorCode(parser)), -1);
  5840   5841           } else {
  5841   5842               Tcl_DStringAppend (&dStr, str, -1);

Changes to generic/nodecmd.c.

   490    490           }
   491    491           break;
   492    492       }
   493    493   
   494    494       if (type < 0 && newNode != NULL) {
   495    495           char buf[64];
   496    496           tcldom_createNodeObj(interp, newNode, buf);
   497         -        Tcl_SetObjResult(interp, Tcl_NewStringObj(buf, strlen(buf)));
          497  +        Tcl_SetObjResult(interp, Tcl_NewStringObj(buf, (domLength)strlen(buf)));
   498    498       }
   499    499       
   500    500       if (ret == TCL_OK) doc->nodeFlags |= NEEDS_RENUMBERING;
   501    501       return ret;
   502    502   }
   503    503   
   504    504   /*----------------------------------------------------------------------------

Changes to generic/schema.c.

  3368   3368                           if (kc->flags & DKC_FLAG_IGNORE_EMPTY_FIELD_SET) {
  3369   3369                               continue;
  3370   3370                           }
  3371   3371                           if (kc->emptyFieldSetValue) {
  3372   3372                               if (first) first = 0;
  3373   3373                               else Tcl_DStringAppend (&dStr, ":", 1);
  3374   3374                               Tcl_DStringAppend (&dStr, kc->emptyFieldSetValue,
  3375         -                                               kc->efsv_len);
         3375  +                                               (domLength)kc->efsv_len);
  3376   3376                           } else {
  3377   3377                               if (first) first = 0;
  3378   3378                               else Tcl_DStringAppend (&dStr, ":", 1);
  3379   3379                           }
  3380   3380                           continue;
  3381   3381                       }
  3382   3382                       if (frs.nr_nodes != 1) {
................................................................................
  3923   3923                       repoolStackElement (sdata, se1);
  3924   3924                       if (!probeMayskip) {
  3925   3925                           expectedFlags &= ~EXPECTED_PROBE_MAYSKIP;
  3926   3926                       }
  3927   3927                       if (mayskip) break;
  3928   3928                   }
  3929   3929                   if (probeMayskip) break;
  3930         -                Tcl_CreateHashEntry (seenCPs, ic, &hnew);
         3930  +                Tcl_CreateHashEntry (seenCPs, (char *)ic, &hnew);
  3931   3931                   if (hnew) {
  3932   3932                       se1 = getStackElement (sdata, ic);
  3933   3933                       mayskip = getNextExpectedWorker (sdata, se1, interp,
  3934   3934                                                        seenCPs, rObj,
  3935   3935                                                        expectedFlags);
  3936   3936                       repoolStackElement (sdata, se1);
  3937   3937                   }
................................................................................
  4012   4012                           break;
  4013   4013                       case SCHEMA_CTYPE_PATTERN:
  4014   4014                           if (recursivePattern (se, jc)) {
  4015   4015                               break;
  4016   4016                           }
  4017   4017                           /* fall through */
  4018   4018                       case SCHEMA_CTYPE_INTERLEAVE:
  4019         -                        Tcl_CreateHashEntry (seenCPs, jc, &hnew);
         4019  +                        Tcl_CreateHashEntry (seenCPs, (char *)jc, &hnew);
  4020   4020                           if (hnew) {
  4021   4021                               se1 = getStackElement (sdata, jc);
  4022   4022                               mayskip = getNextExpectedWorker (
  4023   4023                                   sdata, se1, interp, seenCPs, rObj,
  4024   4024                                   expectedFlags
  4025   4025                                   );
  4026   4026                               repoolStackElement (sdata, se1);
................................................................................
  4198   4198       SchemaData *sdata,
  4199   4199       Tcl_Interp *interp,
  4200   4200       int objc,
  4201   4201       Tcl_Obj *const objv[]
  4202   4202       )
  4203   4203   {
  4204   4204       int methodIndex, expectedFlags;
  4205         -    Tcl_WideInt line, column, byteIndex;
         4205  +    XML_Size line, column;
         4206  +    XML_Index byteIndex;
  4206   4207       Tcl_HashEntry *h;
  4207   4208       SchemaCP *cp;
  4208   4209       SchemaValidationStack *se;
  4209   4210       void *ns;
  4210   4211       Tcl_Obj *rObj;
  4211   4212       
  4212   4213       static const char *schemaInstanceInfoMethods[] = {
................................................................................
  4535   4536               break;
  4536   4537           }
  4537   4538           break;
  4538   4539   
  4539   4540       case m_line:
  4540   4541           if (!sdata->parser && !sdata->node) break;
  4541   4542           if (sdata->parser) {
  4542         -            SetLongResult (XML_GetCurrentLineNumber (sdata->parser));
         4543  +            SetLongResult ((domLength)XML_GetCurrentLineNumber (sdata->parser));
  4543   4544               break;
  4544   4545           }
  4545   4546           if (domGetLineColumn(sdata->node, &line, &column, &byteIndex) < 0)
  4546   4547               break;
  4547         -        SetLongResult (line);
         4548  +        SetLongResult ((domLength)line);
  4548   4549           break;
  4549   4550           
  4550   4551       case m_column:
  4551   4552           if (!sdata->parser && !sdata->node) break;
  4552   4553           if (sdata->parser) {
  4553         -            SetLongResult (XML_GetCurrentColumnNumber (sdata->parser));
         4554  +            SetLongResult ((domLength)XML_GetCurrentColumnNumber (sdata->parser));
  4554   4555               break;
  4555   4556           }
  4556   4557           if (domGetLineColumn(sdata->node, &line, &column, &byteIndex) < 0)
  4557   4558               break;
  4558         -        SetLongResult (column);
         4559  +        SetLongResult ((domLength)column);
  4559   4560           break;
  4560   4561   
  4561   4562       case m_byteIndex:
  4562   4563           if (!sdata->parser && !sdata->node) break;
  4563   4564           if (sdata->parser) {
  4564         -            SetLongResult (XML_GetCurrentByteIndex (sdata->parser));
         4565  +            SetLongResult ((domLength)XML_GetCurrentByteIndex (sdata->parser));
  4565   4566               break;
  4566   4567           }
  4567   4568           if (domGetLineColumn(sdata->node, &line, &column, &byteIndex) < 0)
  4568   4569               break;
  4569         -        SetLongResult (byteIndex);
         4570  +        SetLongResult ((domLength)byteIndex);
  4570   4571           break;
  4571   4572   
  4572   4573       case m_domNode:
  4573   4574           if (!sdata->node) break;
  4574   4575           /* We distinguish between calls from reportCmd and others
  4575   4576            * (from scripts called with the tcl cmd). */
  4576   4577           if (sdata->vaction) {
................................................................................
  4628   4629       XML_Parser parser
  4629   4630       )
  4630   4631   {
  4631   4632       Tcl_Obj *resultObj;
  4632   4633       char sl[50], sc[50];
  4633   4634   
  4634   4635       resultObj = Tcl_NewObj ();
  4635         -    sprintf(sl, "%" TCL_LL_MODIFIER "d", XML_GetCurrentLineNumber(parser));
  4636         -    sprintf(sc, "%" TCL_LL_MODIFIER "d", XML_GetCurrentColumnNumber(parser));
         4636  +    sprintf(sl, "%" TDOM_LS_MODIFIER "d", XML_GetCurrentLineNumber(parser));
         4637  +    sprintf(sc, "%" TDOM_LS_MODIFIER "d", XML_GetCurrentColumnNumber(parser));
  4637   4638       if (sdata->validationState == VALIDATION_ERROR) {
  4638   4639           Tcl_AppendStringsToObj (resultObj, "error \"",
  4639   4640                                   Tcl_GetStringResult (interp),
  4640   4641                                   "\" at line ", sl, " character ", sc, NULL);
  4641   4642       } else {
  4642   4643           Tcl_AppendStringsToObj (resultObj, "error \"",
  4643   4644                                   XML_ErrorString(XML_GetErrorCode(parser)),
................................................................................
  4676   4677       }
  4677   4678   
  4678   4679       cmdPtr = Tcl_NewStringObj(Tcl_GetString(vdata->externalentitycommandObj), -1);
  4679   4680       Tcl_IncrRefCount(cmdPtr);
  4680   4681   
  4681   4682       if (base) {
  4682   4683           Tcl_ListObjAppendElement(vdata->interp, cmdPtr,
  4683         -                                 Tcl_NewStringObj(base, strlen(base)));
         4684  +                                 Tcl_NewStringObj(base, (domLength)strlen(base)));
  4684   4685       } else {
  4685   4686           Tcl_ListObjAppendElement(vdata->interp, cmdPtr,
  4686   4687                                    Tcl_NewObj());
  4687   4688       }
  4688   4689   
  4689   4690       /* For a document with doctype declaration, the systemId is always
  4690   4691          != NULL. But if the document doesn't have a doctype declaration
  4691   4692          and the user uses -useForeignDTD 1, the externalEntityRefHandler
  4692   4693          will be called with a systemId (and publicId and openEntityNames)
  4693   4694          == NULL. */
  4694   4695       if (systemId) {
  4695   4696           Tcl_ListObjAppendElement(vdata->interp, cmdPtr,
  4696         -                                 Tcl_NewStringObj(systemId, strlen(systemId)));
         4697  +                                 Tcl_NewStringObj(systemId, (domLength)strlen(systemId)));
  4697   4698       } else {
  4698   4699           Tcl_ListObjAppendElement(vdata->interp, cmdPtr,
  4699   4700                                    Tcl_NewObj());
  4700   4701       }
  4701   4702   
  4702   4703       if (publicId) {
  4703   4704           Tcl_ListObjAppendElement(vdata->interp, cmdPtr,
  4704         -                                 Tcl_NewStringObj(publicId, strlen(publicId)));
         4705  +                                 Tcl_NewStringObj(publicId, (domLength)strlen(publicId)));
  4705   4706       } else {
  4706   4707           Tcl_ListObjAppendElement(vdata->interp, cmdPtr,
  4707   4708                                    Tcl_NewObj());
  4708   4709       }
  4709   4710   
  4710   4711    
  4711   4712       result = Tcl_EvalObjEx (vdata->interp, cmdPtr, 
................................................................................
  4794   4795               if (interpResult[0] == '\0') {
  4795   4796                   tcldom_reportErrorLocation (
  4796   4797                       vdata->interp, 20, 40, XML_GetCurrentLineNumber(extparser),
  4797   4798                       XML_GetCurrentColumnNumber(extparser), xmlstringstart,
  4798   4799                       systemId, XML_GetCurrentByteIndex(extparser),
  4799   4800                       XML_ErrorString(XML_GetErrorCode(extparser)));
  4800   4801               } else {
  4801         -                sprintf(s, "%" TCL_LL_MODIFIER "d",
         4802  +                sprintf(s, "%" TDOM_LS_MODIFIER "d",
  4802   4803                           XML_GetCurrentLineNumber(extparser));
  4803   4804                   Tcl_AppendResult(vdata->interp, ", referenced in entity \"",
  4804   4805                                    systemId, 
  4805   4806                                    "\" at line ", s, " character ", NULL);
  4806         -                sprintf(s, "%" TCL_LL_MODIFIER "d",
         4807  +                sprintf(s, "%" TDOM_LS_MODIFIER "d",
  4807   4808                           XML_GetCurrentColumnNumber(extparser));
  4808   4809                   Tcl_AppendResult(vdata->interp, s, NULL);
  4809   4810               }
  4810   4811               keepresult = 1;
  4811   4812               result = 0;
  4812   4813               break;
  4813   4814           case XML_STATUS_SUSPENDED:
................................................................................
  4821   4822           do {
  4822   4823               len = Tcl_Read (chan, buf, sizeof(buf));
  4823   4824               done = len < sizeof(buf);
  4824   4825               status = XML_Parse (extparser, buf, (int)len, done);
  4825   4826               switch (status) {
  4826   4827               case XML_STATUS_ERROR:
  4827   4828                   interpResult = Tcl_GetStringResult(vdata->interp);
  4828         -                sprintf(s, "%" TCL_LL_MODIFIER "d",
         4829  +                sprintf(s, "%" TDOM_LS_MODIFIER "d",
  4829   4830                           XML_GetCurrentLineNumber(extparser));
  4830   4831                   if (interpResult[0] == '\0') {
  4831   4832                       Tcl_ResetResult (vdata->interp);
  4832   4833                       Tcl_AppendResult(
  4833   4834                           vdata->interp, "error \"",
  4834   4835                           XML_ErrorString(XML_GetErrorCode(extparser)),
  4835   4836                           "\" in entity \"", systemId, "\" at line ", s,
  4836   4837                           " character ", NULL
  4837   4838                           );
  4838         -                    sprintf(s, "%" TCL_LL_MODIFIER "d",
         4839  +                    sprintf(s, "%" TDOM_LS_MODIFIER "d",
  4839   4840                               XML_GetCurrentColumnNumber(extparser));
  4840   4841                       Tcl_AppendResult(vdata->interp, s, NULL);
  4841   4842                   } else {
  4842   4843                       Tcl_AppendResult(
  4843   4844                           vdata->interp, ", referenced in entity \"", systemId,
  4844   4845                           "\" at line ", s, " character ", NULL
  4845   4846                           );
  4846         -                    sprintf(s, "%" TCL_LL_MODIFIER "d",
         4847  +                    sprintf(s, "%" TDOM_LS_MODIFIER "d",
  4847   4848                               XML_GetCurrentColumnNumber(extparser));
  4848   4849                       Tcl_AppendResult(vdata->interp, s, NULL);
  4849   4850                   }
  4850   4851                   result = 0;
  4851   4852                   keepresult = 1;
  4852   4853                   done = 1;
  4853   4854                   break;

Changes to generic/tcldom.c.

   216    216       Tcl_Obj    * msgcmd;
   217    217   } XsltMsgCBInfo;
   218    218   
   219    219   
   220    220   static void UpdateStringOfTdomNode(Tcl_Obj *objPtr);
   221    221   static int  SetTdomNodeFromAny(Tcl_Interp *interp, Tcl_Obj *objPtr);
   222    222   
   223         -const Tcl_ObjType tdomNodeType = {
          223  +Tcl_ObjType tdomNodeType = {
   224    224       "tdom-node",
   225    225       NULL,
   226    226       NULL,
   227    227       UpdateStringOfTdomNode,
   228    228       SetTdomNodeFromAny
   229    229   };
   230    230   
................................................................................
   436    436   UpdateStringOfTdomNode(
   437    437       Tcl_Obj *objPtr)
   438    438   {
   439    439       char nodeName[80];
   440    440       domLength  len;
   441    441       
   442    442       NODE_CMD(nodeName, objPtr->internalRep.otherValuePtr);
   443         -    len = strlen(nodeName);
          443  +    len = (domLength)strlen(nodeName);
   444    444       objPtr->bytes = (ckalloc((unsigned char) len+1));
   445    445       memcpy(objPtr->bytes, nodeName, len+1);
   446    446       objPtr->length = len;
   447    447   }
   448    448   
   449    449   /*----------------------------------------------------------------------------
   450    450   |   SetTdomNodeFromAny
................................................................................
  1470   1470       const char *varValue;
  1471   1471       const char *termPtr;
  1472   1472       Tcl_Interp *interp = (Tcl_Interp *) clientData;
  1473   1473       
  1474   1474       *offset = 0;
  1475   1475       varValue = Tcl_ParseVar(interp, strToParse, &termPtr);
  1476   1476       if (varValue) {
  1477         -        *offset = termPtr - strToParse;
         1477  +        *offset = (domLength)(termPtr - strToParse);
  1478   1478           /* If strToParse start with a single '$' without a following
  1479   1479            * var name (according to Tcl var name rules), Tcl_ParseVar()
  1480   1480            * doesn't report a parsing error but returns just a pointer
  1481   1481            * to a static string "$". */ 
  1482   1482           if (*offset == 1) {
  1483   1483               *errMsg = tdomstrdup ("Missing var name after '$'.");
  1484   1484               varValue = NULL;
................................................................................
  2352   2352                       }
  2353   2353                   } else {
  2354   2354                       AP(*pc);
  2355   2355                   }
  2356   2356               }
  2357   2357           }
  2358   2358           if (b >= bLimit) {
  2359         -            writeChars(xmlString, chan, buf, b - buf);
         2359  +            writeChars(xmlString, chan, buf, (domLength)(b - buf));
  2360   2360               b = buf;
  2361   2361           }
  2362   2362           pc++;
  2363   2363       }
  2364   2364       if (b > buf) {
  2365         -        writeChars(xmlString, chan, buf, b - buf);
         2365  +        writeChars(xmlString, chan, buf, (domLength)(b - buf));
  2366   2366       }
  2367   2367   }
  2368   2368   
  2369   2369   /*----------------------------------------------------------------------------
  2370   2370   |   tcldom_tolower
  2371   2371   |
  2372   2372   \---------------------------------------------------------------------------*/
................................................................................
  2677   2677                   if (*p == ']') {
  2678   2678                       p++; i++;
  2679   2679                       if (i >= ((domTextNode*)node)->valueLength) break;
  2680   2680                       if (*p == ']') {
  2681   2681                           p++; i++;
  2682   2682                           if (i >= ((domTextNode*)node)->valueLength) break;
  2683   2683                           if (*p == '>') {
  2684         -                            writeChars(xmlString, chan, start, p-start);
         2684  +                            writeChars(xmlString, chan, start, (domLength)(p-start));
  2685   2685                               writeChars(xmlString, chan, "]]><![CDATA[>", 13);
  2686   2686                               start = p+1;
  2687   2687                           }
  2688   2688                       }
  2689   2689                   }
  2690   2690                   p++; i++;
  2691   2691               }
  2692         -            writeChars(xmlString, chan, start, p-start);
         2692  +            writeChars(xmlString, chan, start, (domLength)(p-start));
  2693   2693               writeChars(xmlString, chan, "]]>", 3);
  2694   2694           } else {
  2695   2695               if (node->nodeFlags & DISABLE_OUTPUT_ESCAPING) {
  2696   2696                   writeChars(xmlString, chan, ((domTextNode*)node)->nodeValue,
  2697   2697                              ((domTextNode*)node)->valueLength);
  2698   2698               } else {
  2699   2699                   tcldom_AppendEscaped(xmlString, chan,
................................................................................
  2942   2942                   for (i = 0; i < clen; i++) {
  2943   2943                       AP(*pc);
  2944   2944                       pc++;
  2945   2945                   }
  2946   2946               }
  2947   2947           }
  2948   2948           if (b >= bLimit) {
  2949         -            writeChars(jstring, chan, buf, b - buf);
         2949  +            writeChars(jstring, chan, buf, (domLength)(b - buf));
  2950   2950               b = buf;
  2951   2951           }
  2952   2952       }
  2953   2953       AP('"');
  2954         -    writeChars(jstring, chan, buf, b - buf);
         2954  +    writeChars(jstring, chan, buf, (domLength)(b - buf));
  2955   2955   }
  2956   2956   
  2957   2957   static
  2958   2958   void tcldom_childrenAsJSON (
  2959   2959       Tcl_Obj     *jstring,
  2960   2960       domNode     *node, /* Must be an ELEMENT_NODE */
  2961   2961       Tcl_Channel  channel,
................................................................................
  4889   4889       domAttrNode *attrs;
  4890   4890       domException exception;
  4891   4891       char         tmp[200], prefix[MAX_PREFIX_LEN], *method, *nodeName,
  4892   4892                    *str, *attr_name, *attr_val, *filter;
  4893   4893       const char  *localName, *uri, *nsStr;
  4894   4894       int          result, methodIndex, i;
  4895   4895       domLength    length;
  4896         -    Tcl_WideInt  line, column, byteIndex;
         4896  +    XML_Size     line, column;
         4897  +    XML_Index    byteIndex;
  4897   4898       int          nsIndex, bool, hnew, legacy, jsonType;
  4898   4899       Tcl_Obj     *namePtr, *resultPtr;
  4899   4900       Tcl_Obj     *mobjv[MAX_REWRITE_ARGS], *storedErrMsg;
  4900   4901       Tcl_CmdInfo  cmdInfo;
  4901   4902       Tcl_HashEntry *h;
  4902   4903   
  4903   4904       static const char *nodeMethods[] = {
................................................................................
  5847   5848   
  5848   5849           case m_getLine:
  5849   5850               CheckArgs(2,2,2,"");
  5850   5851               if (domGetLineColumn(node, &line, &column, &byteIndex) < 0) {
  5851   5852                   SetResult("no line/column information available!");
  5852   5853                   return TCL_ERROR;
  5853   5854               }
  5854         -            SetLongResult(line);
         5855  +            SetLongResult((domLength)line);
  5855   5856               break;
  5856   5857   
  5857   5858           case m_getColumn:
  5858   5859               CheckArgs(2,2,2,"");
  5859   5860               if (domGetLineColumn (node, &line, &column, &byteIndex) < 0) {
  5860   5861                   SetResult("no line/column information available!");
  5861   5862                   return TCL_ERROR;
  5862   5863               }
  5863         -            SetLongResult(column);
         5864  +            SetLongResult((domLength)column);
  5864   5865               break;
  5865   5866   
  5866   5867           case m_getByteIndex:
  5867   5868               CheckArgs(2,2,2,"");
  5868   5869               if (domGetLineColumn (node, &line, &column, &byteIndex) < 0) {
  5869   5870                   SetResult("no position information available!");
  5870   5871                   return TCL_ERROR;
  5871   5872               }
  5872         -            SetLongResult(byteIndex);
         5873  +            SetLongResult((domLength)byteIndex);
  5873   5874               break;
  5874   5875   
  5875   5876           case m_getBaseURI:
  5876   5877               CheckArgs(2,2,2,"");
  5877   5878               /* fall through */
  5878   5879   
  5879   5880           case m_baseURI:    
................................................................................
  6915   6916   /* Helper function to build up the error string message in a central
  6916   6917    * place. Caller must provide byteIndex; line is expected to be > 0 if
  6917   6918    * line/column information is given. */
  6918   6919   void tcldom_reportErrorLocation (
  6919   6920       Tcl_Interp *interp,
  6920   6921       int before,
  6921   6922       int after,
  6922         -    domLength line,
  6923         -    domLength column,
         6923  +    XML_Size line,
         6924  +    XML_Size column,
  6924   6925       char *xmlstring,
  6925   6926       const char *entity,
  6926         -    domLength byteIndex,
         6927  +    XML_Index byteIndex,
  6927   6928       const char *errStr
  6928   6929       )
  6929   6930   {
  6930   6931       char s[200], sb[25], sl[25], sc[25];
  6931   6932       char *d = NULL, *buf;
  6932   6933       domLength i, ind;
  6933   6934   
................................................................................
  6939   6940       }
  6940   6941       Tcl_ResetResult(interp);
  6941   6942       Tcl_AppendResult (interp, "error \"", errStr, "\"", NULL);
  6942   6943       if (entity) {
  6943   6944           Tcl_AppendResult (interp, " in entity \"", entity, "\"", NULL);
  6944   6945       }
  6945   6946       if (line) {
  6946         -        sprintf(sl, "%" TCL_SIZE_MODIFIER "d", line);
  6947         -        sprintf(sc, domLengthConversion, column);
         6947  +        sprintf(sl, "%" TDOM_LS_MODIFIER "d", line);
         6948  +        sprintf(sc, "%" TDOM_LS_MODIFIER "d", column);
  6948   6949           Tcl_AppendResult (interp, " at line ", sl, " character ", sc, NULL);
  6949   6950           
  6950   6951       } else {
  6951         -        sprintf(sb, domLengthConversion, byteIndex);
         6952  +        sprintf(sb, "%" TDOM_LS_MODIFIER "d", byteIndex);
  6952   6953           Tcl_AppendResult (interp, " at position ", sb, NULL);
  6953   6954       }
  6954   6955       if (xmlstring) {
  6955   6956           Tcl_AppendResult (interp, "\n\"", NULL);
  6956   6957           ind = 0;
  6957   6958           buf[0] = '\0';
  6958         -        for (i = (byteIndex < before ? 0 : byteIndex - before);
         6959  +        for (i = (byteIndex < before ? 0 : (domLength)(byteIndex - before));
  6959   6960                i <= byteIndex;
  6960   6961                i++) {
  6961   6962               buf[ind] = xmlstring[i];
  6962   6963               ind++;
  6963   6964           }
  6964   6965           buf[ind] = '\0';
  6965   6966           Tcl_AppendResult(interp, buf, " <--Error-- ", NULL);
  6966   6967           ind = 0;
  6967   6968           buf[0] = '\0';
  6968   6969           if (xmlstring[byteIndex]) {
  6969         -            for (i = byteIndex + 1; i < byteIndex + after; i++) {
         6970  +            for (i = (domLength)(byteIndex + 1); i < (domLength)(byteIndex + after); i++) {
  6970   6971                   if (!xmlstring[i]) {
  6971   6972                       break;
  6972   6973                   }
  6973   6974                   buf[ind] = xmlstring[i];
  6974   6975                   ind++;
  6975   6976               }
  6976   6977               buf[ind] = '\0';
................................................................................
  7569   7570                        * feedback callback) we leave the error msg in
  7570   7571                        * the interpreter alone. If there wasn't a Tcl
  7571   7572                        * error, there was a parsing error. Because the
  7572   7573                        * interp has already an error msg, that parsing
  7573   7574                        * error was in an external entity. Therefore, we
  7574   7575                        * just add the place of the referencing entity in
  7575   7576                        * the main document.*/
  7576         -                    sprintf(sl, "%" TCL_LL_MODIFIER "d",
         7577  +                    sprintf(sl, "%" TDOM_LS_MODIFIER "d",
  7577   7578                               XML_GetCurrentLineNumber(parser));
  7578   7579                       Tcl_AppendResult(interp, ", referenced at line ", sl,
  7579   7580                                        NULL);
  7580         -                    sprintf(sc, "%" TCL_LL_MODIFIER "d",
         7581  +                    sprintf(sc, "%" TDOM_LS_MODIFIER "d",
  7581   7582                               XML_GetCurrentColumnNumber(parser));
  7582   7583                       Tcl_AppendResult(interp, " character ", sc, NULL);
  7583   7584                   }
  7584   7585               }
  7585   7586               XML_ParserFree(parser);
  7586   7587               return TCL_ERROR;
  7587   7588           }

Changes to generic/tcldom.h.

    82     82                             int             objc,
    83     83                             Tcl_Obj *const  objv[]);
    84     84   
    85     85   void tcldom_reportErrorLocation (
    86     86       Tcl_Interp *interp,
    87     87       int before,
    88     88       int after,
    89         -    domLength line,
    90         -    domLength column,
           89  +    XML_Size line,
           90  +    XML_Size column,
    91     91       char *xmlstring,
    92     92       const char *entity,
    93         -    domLength byteIndex,
           93  +    XML_Index byteIndex,
    94     94       const char *errStr
    95     95       );
    96     96   
    97     97   #ifdef __cplusplus
    98     98   }
    99     99   #endif
   100    100   

Changes to generic/tclexpat.c.

  1120   1120   
  1121   1121     if (!result) {
  1122   1122         if (expat->status == ERROR_IN_EXTREFHANDLER) {
  1123   1123             Tcl_SetObjResult (interp, expat->result);
  1124   1124         }
  1125   1125         else {
  1126   1126             Tcl_ResetResult(interp);
  1127         -          sprintf(s, "%" TCL_LL_MODIFIER "d",
         1127  +          sprintf(s, "%" TDOM_LS_MODIFIER "d",
  1128   1128                     XML_GetCurrentLineNumber(expat->parser));
  1129   1129             Tcl_AppendResult(interp, "error \"",
  1130   1130                              XML_ErrorString(XML_GetErrorCode(expat->parser)),
  1131   1131                              "\" at line ", s, " character ", NULL);
  1132         -          sprintf(s, "%" TCL_LL_MODIFIER "d",
         1132  +          sprintf(s, "%" TDOM_LS_MODIFIER "d",
  1133   1133                     XML_GetCurrentColumnNumber(expat->parser));
  1134   1134             Tcl_AppendResult(interp, s, NULL);
  1135   1135         }
  1136   1136         if (bufObj) {
  1137   1137             Tcl_DecrRefCount (bufObj);
  1138   1138         }
  1139   1139         return TCL_ERROR;
................................................................................
  2520   2520          * Convert the attribute list into a Tcl key-value paired list.
  2521   2521          */
  2522   2522   
  2523   2523         if (atList == NULL) {
  2524   2524             atList = Tcl_NewListObj(0, NULL);
  2525   2525             Tcl_IncrRefCount (atList);
  2526   2526             for (atPtr = atts; atPtr[0] && atPtr[1]; atPtr += 2) {
  2527         -              Tcl_ListObjAppendElement(expat->interp, atList, Tcl_NewStringObj((char *)atPtr[0], strlen(atPtr[0])));
  2528         -              Tcl_ListObjAppendElement(expat->interp, atList, Tcl_NewStringObj((char *)atPtr[1], strlen(atPtr[1])));
         2527  +              Tcl_ListObjAppendElement(expat->interp, atList, Tcl_NewStringObj((char *)atPtr[0], (domLength)strlen(atPtr[0])));
         2528  +              Tcl_ListObjAppendElement(expat->interp, atList, Tcl_NewStringObj((char *)atPtr[1], (domLength)strlen(atPtr[1])));
  2529   2529             }
  2530   2530             vector[2] = atList;
  2531   2531         }
  2532   2532   
  2533   2533         if (activeTclHandlerSet->elementstartObjProc != NULL) {
  2534   2534             vector[0] = activeTclHandlerSet->elementstartcommand;
  2535   2535             Tcl_IncrRefCount (vector[0]);
................................................................................
  2947   2947     }
  2948   2948   
  2949   2949     if (!expat->cdata) {
  2950   2950         expat->cdata = Tcl_NewObj();
  2951   2951         Tcl_IncrRefCount (expat->cdata);
  2952   2952         if (expat->keepTextStart) {
  2953   2953             if (!expat->cdataStartLine) {
  2954         -              expat->cdataStartLine = XML_GetCurrentLineNumber (expat->parser);
  2955         -              expat->cdataStartColumn = XML_GetCurrentColumnNumber (expat->parser);
  2956         -              expat->cdataStartByteIndex = XML_GetCurrentByteIndex (expat->parser);
         2954  +              expat->cdataStartLine = (domLength)XML_GetCurrentLineNumber (expat->parser);
         2955  +              expat->cdataStartColumn = (domLength)XML_GetCurrentColumnNumber (expat->parser);
         2956  +              expat->cdataStartByteIndex = (domLength)XML_GetCurrentByteIndex (expat->parser);
  2957   2957             }
  2958   2958         }
  2959   2959     }
  2960   2960     Tcl_AppendToObj (expat->cdata, s, len);
  2961   2961     return;
  2962   2962   }
  2963   2963   
................................................................................
  3141   3141          * Take a copy of the callback script so that arguments may be appended.
  3142   3142          */
  3143   3143   
  3144   3144         cmdPtr = Tcl_DuplicateObj(activeTclHandlerSet->picommand);
  3145   3145         Tcl_IncrRefCount(cmdPtr);
  3146   3146         Tcl_Preserve((ClientData) expat->interp);
  3147   3147   
  3148         -      Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)target, strlen(target)));
  3149         -      Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)data, strlen(data)));
         3148  +      Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)target, (domLength)strlen(target)));
         3149  +      Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)data, (domLength)strlen(data)));
  3150   3150         result = Tcl_EvalObjEx(expat->interp, cmdPtr, 
  3151   3151                                TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT);
  3152   3152   
  3153   3153         Tcl_DecrRefCount(cmdPtr);
  3154   3154         Tcl_Release((ClientData) expat->interp);
  3155   3155   
  3156   3156         TclExpatHandlerResult(expat, activeTclHandlerSet, result);
................................................................................
  3311   3311          * Take a copy of the callback script so that arguments may be appended.
  3312   3312          */
  3313   3313   
  3314   3314         cmdPtr = Tcl_DuplicateObj(activeTclHandlerSet->entityDeclCommand);
  3315   3315         Tcl_IncrRefCount(cmdPtr);
  3316   3316         Tcl_Preserve((ClientData) expat->interp);
  3317   3317   
  3318         -      Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)entityname, strlen(entityname)));
         3318  +      Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)entityname, (domLength)strlen(entityname)));
  3319   3319         Tcl_ListObjAppendElement (expat->interp, cmdPtr, Tcl_NewIntObj (is_param));
  3320   3320         if (value == NULL) {
  3321   3321             Tcl_ListObjAppendElement (expat->interp, cmdPtr, Tcl_NewListObj (0, NULL));
  3322   3322         }
  3323   3323         else {
  3324   3324             Tcl_ListObjAppendElement (expat->interp, cmdPtr, Tcl_NewStringObj ((char *) value, length));
  3325   3325         }
  3326   3326         if (base == NULL) {
  3327   3327             Tcl_ListObjAppendElement (expat->interp, cmdPtr, Tcl_NewListObj (0, NULL));
  3328   3328         }
  3329   3329         else {
  3330         -          Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)base, strlen(base)));
         3330  +          Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)base, (domLength)strlen(base)));
  3331   3331         }
  3332   3332         if (systemId == NULL) {
  3333   3333             Tcl_ListObjAppendElement (expat->interp, cmdPtr, Tcl_NewListObj (0, NULL));
  3334   3334         } else {
  3335         -          Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)systemId, strlen(systemId)));
         3335  +          Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)systemId, (domLength)strlen(systemId)));
  3336   3336         }
  3337   3337         if (publicId == NULL) {
  3338   3338             Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewListObj(0, NULL));
  3339   3339         } else {
  3340         -          Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)publicId, strlen(publicId)));
         3340  +          Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)publicId, (domLength)strlen(publicId)));
  3341   3341         }
  3342   3342         if (notationName == NULL) {
  3343   3343             Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewListObj(0, NULL));
  3344   3344         } else {
  3345         -          Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)notationName, strlen(notationName)));
         3345  +          Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)notationName, (domLength)strlen(notationName)));
  3346   3346         }
  3347   3347         result = Tcl_EvalObjEx(expat->interp, cmdPtr,
  3348   3348                                TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT);
  3349   3349   
  3350   3350         Tcl_DecrRefCount(cmdPtr);
  3351   3351         Tcl_Release((ClientData) expat->interp);
  3352   3352   
................................................................................
  3423   3423          * Take a copy of the callback script so that arguments may be appended.
  3424   3424          */
  3425   3425   
  3426   3426         cmdPtr = Tcl_DuplicateObj(activeTclHandlerSet->notationcommand);
  3427   3427         Tcl_IncrRefCount(cmdPtr);
  3428   3428         Tcl_Preserve((ClientData) expat->interp);
  3429   3429   
  3430         -      Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)notationName, strlen(notationName)));
  3431         -      Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)base, strlen(base)));
         3430  +      Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)notationName, (domLength)strlen(notationName)));
         3431  +      Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)base, (domLength)strlen(base)));
  3432   3432         if (systemId == NULL) {
  3433   3433             Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewListObj(0, NULL));
  3434   3434         } else {
  3435         -          Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)systemId, strlen(systemId)));
         3435  +          Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)systemId, (domLength)strlen(systemId)));
  3436   3436         }
  3437   3437         if (publicId == NULL) {
  3438   3438             Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewListObj(0, NULL));
  3439   3439         } else {
  3440         -          Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)publicId, strlen(publicId)));
         3440  +          Tcl_ListObjAppendElement(expat->interp, cmdPtr, Tcl_NewStringObj((char *)publicId, (domLength)strlen(publicId)));
  3441   3441         }
  3442   3442         result = Tcl_EvalObjEx(expat->interp, cmdPtr, 
  3443   3443                                TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT);
  3444   3444   
  3445   3445         Tcl_DecrRefCount(cmdPtr);
  3446   3446         Tcl_Release((ClientData) expat->interp);
  3447   3447   
................................................................................
  3573   3573   
  3574   3574         cmdPtr = Tcl_DuplicateObj(activeTclHandlerSet->externalentitycommand);
  3575   3575         Tcl_IncrRefCount(cmdPtr);
  3576   3576         Tcl_Preserve((ClientData) expat->interp);
  3577   3577   
  3578   3578         if (base) {
  3579   3579             Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  3580         -	      Tcl_NewStringObj((char *)base, strlen(base)));
         3580  +	      Tcl_NewStringObj((char *)base, (domLength)strlen(base)));
  3581   3581         } else {
  3582   3582             Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  3583   3583   	      Tcl_NewStringObj("", 0));
  3584   3584         }
  3585   3585   
  3586   3586         if (systemId) {
  3587   3587             Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  3588         -              Tcl_NewStringObj((char *)systemId, strlen(systemId)));
         3588  +              Tcl_NewStringObj((char *)systemId, (domLength)strlen(systemId)));
  3589   3589         } else {
  3590   3590             Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  3591   3591                 Tcl_NewStringObj("", 0));
  3592   3592         }
  3593   3593   
  3594   3594         if (publicId) {
  3595   3595             Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  3596         -	      Tcl_NewStringObj((char *)publicId, strlen(publicId)));
         3596  +	      Tcl_NewStringObj((char *)publicId, (domLength)strlen(publicId)));
  3597   3597         } else {
  3598   3598             Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  3599   3599   	      Tcl_NewStringObj("", 0));
  3600   3600         }
  3601   3601   
  3602   3602         result = Tcl_EvalObjEx(expat->interp, cmdPtr, 
  3603   3603                                TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT);
................................................................................
  3764   3764             }
  3765   3765             break;
  3766   3766         }
  3767   3767   
  3768   3768         Tcl_DecrRefCount (resultObj);
  3769   3769         if (!result) {
  3770   3770             Tcl_ResetResult (expat->interp);
  3771         -          sprintf(s, "%" TCL_LL_MODIFIER "d",
         3771  +          sprintf(s, "%" TDOM_LS_MODIFIER "d",
  3772   3772                     XML_GetCurrentLineNumber(extparser));
  3773   3773             Tcl_AppendResult(expat->interp, "Not wellformed error \"",
  3774   3774                              XML_ErrorString(XML_GetErrorCode(extparser)),
  3775   3775                              "\" while parsing external entity: \n\t",
  3776   3776                              systemId, "\nat line ", s, " character ", NULL);
  3777         -          sprintf(s, "%" TCL_LL_MODIFIER "d",
         3777  +          sprintf(s, "%" TDOM_LS_MODIFIER "d",
  3778   3778                     XML_GetCurrentColumnNumber(extparser));
  3779   3779             Tcl_AppendResult(expat->interp, s, NULL);
  3780   3780             XML_ParserFree (extparser);
  3781   3781             expat->parser = oldparser;
  3782   3782             TclExpatHandlerResult(expat, activeTclHandlerSet,
  3783   3783                                   ERROR_IN_EXTREFHANDLER);
  3784   3784             return 0;
................................................................................
  3889   3889         }
  3890   3890   
  3891   3891         cmdPtr = Tcl_DuplicateObj(activeTclHandlerSet->commentCommand);
  3892   3892         Tcl_IncrRefCount(cmdPtr);
  3893   3893         Tcl_Preserve((ClientData) expat->interp);
  3894   3894   
  3895   3895         Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  3896         -                               Tcl_NewStringObj((char *)data, strlen(data)));
         3896  +                               Tcl_NewStringObj((char *)data, (domLength)strlen(data)));
  3897   3897   
  3898   3898         result = Tcl_EvalObjEx(expat->interp, cmdPtr, 
  3899   3899                                TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT);
  3900   3900   
  3901   3901         Tcl_DecrRefCount(cmdPtr);
  3902   3902         Tcl_Release((ClientData) expat->interp);
  3903   3903   
................................................................................
  4264   4264         if (activeTclHandlerSet->elementDeclCommand == NULL) {
  4265   4265             goto nextTcl;
  4266   4266         }
  4267   4267   
  4268   4268         cmdPtr = Tcl_DuplicateObj(activeTclHandlerSet->elementDeclCommand);
  4269   4269         Tcl_IncrRefCount(cmdPtr);
  4270   4270         Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  4271         -                               Tcl_NewStringObj((char *)name, strlen(name)));
         4271  +                               Tcl_NewStringObj((char *)name, (domLength)strlen(name)));
  4272   4272   
  4273   4273   
  4274   4274         content = Tcl_NewListObj (0, NULL);
  4275   4275         generateModel (expat->interp, content, model);
  4276   4276   
  4277   4277         Tcl_ListObjAppendElement(expat->interp, cmdPtr, content);
  4278   4278   
................................................................................
  4353   4353         }
  4354   4354   
  4355   4355         cmdPtr = Tcl_DuplicateObj(activeTclHandlerSet->attlistDeclCommand);
  4356   4356         Tcl_IncrRefCount(cmdPtr);
  4357   4357         Tcl_Preserve((ClientData) expat->interp);
  4358   4358   
  4359   4359         Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  4360         -                               Tcl_NewStringObj((char *)elname, strlen (elname)));
         4360  +                               Tcl_NewStringObj((char *)elname, (domLength)strlen (elname)));
  4361   4361         Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  4362         -                               Tcl_NewStringObj((char *)name, strlen (name)));
         4362  +                               Tcl_NewStringObj((char *)name, (domLength)strlen (name)));
  4363   4363         Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  4364         -                               Tcl_NewStringObj((char *)type, strlen (type)));
         4364  +                               Tcl_NewStringObj((char *)type, (domLength)strlen (type)));
  4365   4365         if (!dflt) {
  4366   4366             Tcl_ListObjAppendElement (expat->interp, cmdPtr,
  4367   4367                                       Tcl_NewStringObj ("", 0));
  4368   4368         }
  4369   4369         else {
  4370   4370             Tcl_ListObjAppendElement (expat->interp, cmdPtr,
  4371         -                                    Tcl_NewStringObj ((char*)dflt, strlen (dflt)));
         4371  +                                    Tcl_NewStringObj ((char*)dflt, (domLength)strlen (dflt)));
  4372   4372         }
  4373   4373         Tcl_ListObjAppendElement (expat->interp, cmdPtr,
  4374   4374                                   Tcl_NewIntObj (isrequired));
  4375   4375   
  4376   4376         result = Tcl_EvalObjEx(expat->interp, cmdPtr, 
  4377   4377                                TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT);
  4378   4378         
................................................................................
  4450   4450         }
  4451   4451   
  4452   4452         cmdPtr = Tcl_DuplicateObj(activeTclHandlerSet->startDoctypeDeclCommand);
  4453   4453         Tcl_IncrRefCount(cmdPtr);
  4454   4454         Tcl_Preserve((ClientData) expat->interp);
  4455   4455   
  4456   4456         Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  4457         -          Tcl_NewStringObj((char *)doctypeName, strlen(doctypeName)));
         4457  +          Tcl_NewStringObj((char *)doctypeName, (domLength)strlen(doctypeName)));
  4458   4458         if (sysid != NULL) {
  4459   4459             Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  4460         -                               Tcl_NewStringObj((char *)sysid, strlen(sysid)));
         4460  +                               Tcl_NewStringObj((char *)sysid, (domLength)strlen(sysid)));
  4461   4461         } else {
  4462   4462             Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  4463   4463                                  Tcl_NewStringObj("NULL", 4));
  4464   4464         }
  4465   4465         if (pubid != NULL) {
  4466   4466             Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  4467         -                               Tcl_NewStringObj((char *)pubid, strlen(sysid)));
         4467  +                               Tcl_NewStringObj((char *)pubid, (domLength)strlen(sysid)));
  4468   4468         } else {
  4469   4469             Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  4470   4470                                  Tcl_NewStringObj("NULL", 4));
  4471   4471         }
  4472   4472         Tcl_ListObjAppendElement(expat->interp, cmdPtr,
  4473   4473                              Tcl_NewIntObj(has_internal_subset));
  4474   4474   

Changes to generic/tclpull.c.

   372    372       Tcl_Interp *interp,
   373    373       tDOM_PullParserInfo *pullInfo
   374    374       )
   375    375   {
   376    376       char s[255];
   377    377   
   378    378       Tcl_ResetResult (interp);
   379         -    sprintf(s, "%" TCL_LL_MODIFIER "d",
          379  +    sprintf(s, "%" TDOM_LS_MODIFIER "d",
   380    380               XML_GetCurrentLineNumber(pullInfo->parser));
   381    381       Tcl_AppendResult(interp, "error \"",
   382    382                        XML_ErrorString(
   383    383                            XML_GetErrorCode(pullInfo->parser)),
   384    384                        "\" at line ", s, " column ", NULL);
   385         -    sprintf(s, "%" TCL_LL_MODIFIER "d",
          385  +    sprintf(s, "%" TDOM_LS_MODIFIER "d",
   386    386               XML_GetCurrentColumnNumber(pullInfo->parser));
   387    387       Tcl_AppendResult(interp, s, NULL);
   388    388   }
   389    389   
   390    390   static void
   391    391   tDOM_CleanupInputSource (
   392    392       tDOM_PullParserInfo *pullInfo

Changes to generic/xmlsimple.c.

   399    399                        * text nodes */
   400    400                       tnode = (domTextNode*)parent_node->lastChild;
   401    401                       tnode->nodeValue = REALLOC(tnode->nodeValue,
   402    402                                                  tnode->valueLength + x - start + 1);
   403    403                       memmove(tnode->nodeValue + tnode->valueLength,
   404    404                               start, x - start);
   405    405                       saved = tnode->valueLength;
   406         -                    tnode->valueLength += (x - start);
          406  +                    tnode->valueLength += (domLength)(x - start);
   407    407                       *(tnode->nodeValue + tnode->valueLength) = 0;
   408    408                       if (ampersandSeen) {
   409    409                           if (!TranslateEntityRefs(tnode->nodeValue + saved, 
   410    410                                                    &(tnode->valueLength) )) {
   411         -                            RetError("Entity parsing error", (x - xml));
          411  +                            RetError("Entity parsing error", (domLength)(x - xml));
   412    412                           }
   413    413                           tnode->valueLength += saved;
   414    414                       }
   415    415                   } else {
   416    416                       /*--------------------------------------------------------
   417    417                         |   allocate new TEXT node
   418    418                         \-------------------------------------------------------*/
   419    419                       tnode = (domTextNode*) domAlloc(sizeof(domTextNode));
   420    420                       memset(tnode, 0, sizeof(domTextNode));
   421    421                       tnode->nodeType    = TEXT_NODE;
   422    422                       tnode->ownerDocument = doc;
   423    423                       tnode->nodeNumber  = NODE_NO(doc);
   424         -                    tnode->valueLength = (x - start);
          424  +                    tnode->valueLength = (domLength)(x - start);
   425    425                       tnode->nodeValue   = (char*)MALLOC((x - start)+1);
   426    426                       memmove(tnode->nodeValue, start, (x - start));
   427    427                       *(tnode->nodeValue + (x - start)) = 0;
   428    428                       tnode->parentNode = parent_node;
   429    429                       if (parent_node->firstChild)  {
   430    430                           parent_node->lastChild->nextSibling = (domNode*)tnode;
   431    431                           tnode->previousSibling = parent_node->lastChild;
................................................................................
   433    433                       } else {
   434    434                           parent_node->firstChild = parent_node->lastChild = 
   435    435                               (domNode*)tnode;
   436    436                       }
   437    437                       if (ampersandSeen) {
   438    438                           if (!TranslateEntityRefs(tnode->nodeValue, 
   439    439                                                    &(tnode->valueLength) )) {
   440         -                            RetError("Entity parsing error", (x - xml));
          440  +                            RetError("Entity parsing error", (domLength)(x - xml));
   441    441                           }
   442    442                       }
   443    443                   }
   444    444               }
   445    445   
   446    446           } else if (x[1]=='/') {
   447    447               /*------------------------------------------------------------
   448    448               |   read and check closing tag
   449    449               \-----------------------------------------------------------*/
   450    450               node = parent_node;
   451    451               if (!parent_node) {
   452         -                RetError("Syntax error",(x - xml));
          452  +                RetError("Syntax error", (domLength)(x - xml));
   453    453               }
   454    454               parent_node = node->parentNode;
   455    455               pn = (char*)node->nodeName;
   456    456   
   457    457               x += 2;
   458    458               while (*x == *pn) { x++; pn++; }
   459    459               if ( *pn || (*x!='>' && !SPACE(*x) ) ) {
   460         -                RetError("Unterminated element",(x - xml));
          460  +                RetError("Unterminated element", (domLength)(x - xml));
   461    461               }
   462    462               while (SPACE(*x)) {
   463    463                   x++;
   464    464               }
   465    465               if (*x=='>') {
   466    466                   x++;
   467    467               } else {
   468         -                RetError("Missing \">\"",(x - xml)-1);
          468  +                RetError("Missing \">\"",((domLength)(x - xml))-1);
   469    469               }
   470    470   #ifdef TDOM_NS 
   471    471               depth--;
   472    472               /* pop active namespaces */
   473    473               while ( (activeNSpos >= 0) &&
   474    474                       (activeNS[activeNSpos].depth == depth) )
   475    475               {
................................................................................
   504    504                           \---------------------------------------------------*/
   505    505                           tnode = (domTextNode*) domAlloc(sizeof(domTextNode));
   506    506                           memset(tnode, 0, sizeof(domTextNode));
   507    507                           tnode->nodeType      = COMMENT_NODE;
   508    508                           tnode->ownerDocument = doc;
   509    509                           tnode->nodeNumber    = NODE_NO(doc);
   510    510                           tnode->parentNode    = parent_node;
   511         -                        tnode->valueLength   = x - start - 4;
          511  +                        tnode->valueLength   = (domLength)(x - start - 4);
   512    512                           tnode->nodeValue     = (char*)MALLOC(tnode->valueLength+1);
   513    513                           memmove(tnode->nodeValue, start+4, tnode->valueLength);
   514    514                           *(tnode->nodeValue + tnode->valueLength) = 0;
   515    515                           if (parent_node == NULL) {
   516    516                               if (doc->rootNode->lastChild) {
   517    517                                   tnode->previousSibling = 
   518    518                                       doc->rootNode->lastChild;
................................................................................
   529    529                                   parent_node->lastChild = (domNode*)tnode;
   530    530                               } else {
   531    531                                   parent_node->firstChild = parent_node->lastChild = (domNode*)tnode;
   532    532                               }
   533    533                           }
   534    534                           x += 3;
   535    535                       } else {
   536         -                        RetError("Unterminated comment",(start-xml));
          536  +                        RetError("Unterminated comment",(domLength)(start-xml));
   537    537                       }
   538    538                       continue;
   539    539   
   540    540                   } else if (x[1]=='D' && x[2]=='O' &&
   541    541                              x[3]=='C' && x[4]=='T' &&
   542    542                              x[5]=='Y' && x[6]=='P' && x[7]=='E' ) {
   543    543                       /*--------------------------------------------------------
................................................................................
   555    555                           } else {
   556    556                               x++;
   557    557                           }
   558    558                       }
   559    559                       if (*x) {
   560    560                           x++;
   561    561                       } else {
   562         -                        RetError("Unterminated DOCTYPE definition",(start-xml));
          562  +                        RetError("Unterminated DOCTYPE definition",
          563  +                                 (domLength)(start-xml));
   563    564                       }
   564    565                       continue;
   565    566   
   566    567                   } else if (x[1]=='[' && x[2]=='C' &&
   567    568                              x[3]=='D' && x[4]=='A' &&
   568    569                              x[5]=='T' && x[6]=='A' && x[7]=='[' ) {
   569    570                       /*--------------------------------------------------------
................................................................................
   592    593                                       /* normalize text node, i.e. there
   593    594                                        * are no adjacent text nodes */
   594    595                                       tnode = (domTextNode*)parent_node->lastChild;
   595    596                                       tnode->nodeValue =
   596    597                                           REALLOC(tnode->nodeValue,
   597    598                                                   tnode->valueLength + x - start + 1);
   598    599                                       memmove(tnode->nodeValue + tnode->valueLength,
   599         -                                            start, x - start);
   600         -                                    tnode->valueLength += (x - start);
          600  +                                            start, (x - start));
          601  +                                    tnode->valueLength += (domLength)(x - start);
   601    602                                       *(tnode->nodeValue + tnode->valueLength) = 0;
   602    603                                   }
   603    604                               } else {
   604    605                                   if (!(only_whites && ignoreWhiteSpaces)
   605    606                                       && ((x - start) || keepCDATA)) {
   606    607                                       /*----------------------------------------------------
   607    608                                         |   allocate new node for CDATA section data
................................................................................
   611    612                                       if (keepCDATA)
   612    613                                           tnode->nodeType      = CDATA_SECTION_NODE;
   613    614                                       else 
   614    615                                           tnode->nodeType      = TEXT_NODE;
   615    616                                       tnode->ownerDocument = doc;
   616    617                                       tnode->nodeNumber    = NODE_NO(doc);
   617    618                                       tnode->parentNode    = parent_node;
   618         -                                    tnode->valueLength   = (x - start);
          619  +                                    tnode->valueLength   = (domLength)(x - start);
   619    620                                       tnode->nodeValue     = (char*)MALLOC((x - start)+1);
   620    621                                       memmove(tnode->nodeValue, start, (x - start));
   621    622                                       *(tnode->nodeValue + (x - start)) = 0;
   622    623                                       if (parent_node->firstChild)  {
   623    624                                           parent_node->lastChild->nextSibling = (domNode*)tnode;
   624    625                                           tnode->previousSibling = parent_node->lastChild;
   625    626                                           parent_node->lastChild = (domNode*)tnode;
................................................................................
   627    628                                           parent_node->firstChild = parent_node->lastChild = (domNode*)tnode;
   628    629                                       }
   629    630                                   }
   630    631                               }
   631    632                           }
   632    633                           x += 3;
   633    634                       } else {
   634         -                        RetError("Unterminated CDATA definition",(start-xml) );
          635  +                        RetError("Unterminated CDATA definition",(domLength)(start-xml) );
   635    636                       }
   636    637                       continue;
   637    638                    } else {
   638         -                        RetError("Incorrect <!... tag",(start-xml) );
          639  +                        RetError("Incorrect <!... tag",(domLength)(start-xml));
   639    640                    }
   640    641   
   641    642               } else if (*x=='?') {
   642    643                   /*--------------------------------------------------------
   643    644                   |   read over a processing instructions(PI) / XMLDecl
   644    645                   \-------------------------------------------------------*/
   645    646                   x++;
................................................................................
   666    667                       piSep = start;
   667    668                       while ( (c=*piSep)!=0 && !SPACE(c) &&
   668    669                               (c!='?' || piSep[1]!='>')) {
   669    670                            piSep++;
   670    671                       }
   671    672                       *piSep = '\0'; /* temporarily terminate the string */
   672    673   
   673         -                    pinode->targetLength = strlen(start);
          674  +                    pinode->targetLength = (domLength)strlen(start);
   674    675                       pinode->targetValue  = (char*)MALLOC(pinode->targetLength);
   675    676                       memmove(pinode->targetValue, start, pinode->targetLength);
   676    677   
   677    678                       *piSep = c;  /* remove temporarily termination */
   678    679   
   679    680                       /*-------------------------------------------------
   680    681                       |   extract PI data
   681    682                       \------------------------------------------------*/
   682    683                       while (SPACE(*piSep)) {
   683    684                           piSep++;
   684    685                       }
   685         -                    pinode->dataLength = x - piSep;
          686  +                    pinode->dataLength = (domLength)(x - piSep);
   686    687                       pinode->dataValue  = (char*)MALLOC(pinode->dataLength);
   687    688                       memmove(pinode->dataValue, piSep, pinode->dataLength);
   688    689   
   689    690                       if (parent_node == NULL) {
   690    691                           if (doc->rootNode->lastChild) {
   691    692                               pinode->previousSibling = doc->rootNode->lastChild;
   692    693                               doc->rootNode->lastChild->nextSibling 
................................................................................
   702    703                               parent_node->lastChild = (domNode*)pinode;
   703    704                           } else {
   704    705                               parent_node->firstChild = parent_node->lastChild = (domNode*)pinode;
   705    706                           }
   706    707                       }
   707    708                       x += 2;
   708    709                   } else {
   709         -                    RetError("Unterminated processing instruction(PI)",(start-xml) );
          710  +                    RetError("Unterminated processing instruction(PI)",(domLength)(start-xml) );
   710    711                   }
   711    712                   continue;
   712    713               }
   713    714   
   714    715               /*----------------------------------------------------------------
   715    716               |   new tag/element
   716    717               |
   717    718               \---------------------------------------------------------------*/
   718    719               hasContent = 1;
   719    720               while ((c=*x)!=0 && c!='/' && c!='>' && !SPACE(c) ) {
   720    721                   x++;
   721    722               }
   722    723               if (c==0) {
   723         -                RetError("Missing \">\"",(start-xml) );
          724  +                RetError("Missing \">\"",(domLength)(start-xml) );
   724    725               }
   725    726               if ( (x-start)==1) {
   726         -                RetError("Null markup name",(start-xml) );
          727  +                RetError("Null markup name",(domLength)(start-xml) );
   727    728               }
   728    729               *x = '\0'; /* temporarily terminate the string */
   729    730   
   730    731               /*------------------------------------------------------
   731    732               |   create new DOM element node
   732    733               \-----------------------------------------------------*/
   733    734               h = Tcl_CreateHashEntry(&HASHTAB(doc,tdom_tagNames), start+1,
................................................................................
   778    779                   domLength nArgName;
   779    780                   char *ArgVal = NULL;
   780    781                   domLength nArgVal = 0;
   781    782   
   782    783                   while ((c=*x)!=0 && c!='=' && c!='>' && !SPACE(c) ) {
   783    784                       x++;
   784    785                   }
   785         -                nArgName = x - ArgName;
          786  +                nArgName = (domLength)(x - ArgName);
   786    787                   while (SPACE(*x)) {
   787    788                       x++;
   788    789                   }
   789    790                   if (*x=='=') {
   790    791                       x++;
   791    792                   }
   792    793                   savedChar = *(ArgName + nArgName);
................................................................................
   805    806                       ampersandSeen = 0;
   806    807                       while ((c=*x)!=0 && c!=cDelim) {
   807    808                           if (c=='&') {
   808    809                               ampersandSeen = 1;
   809    810                           }
   810    811                           x++;
   811    812                       }
   812         -                    nArgVal = x - ArgVal;
          813  +                    nArgVal = (domLength)(x - ArgVal);
   813    814                       if (c==0) {
   814         -                        RetError("Unterminated string",(ArgVal - xml - 1) );
          815  +                        RetError("Unterminated string",(domLength)(ArgVal - xml - 1));
   815    816                       } else {
   816    817                           x++;
   817    818                       }
   818    819                   } else if (c!=0 && c!='>') {
   819    820                       ArgVal = x;
   820    821                       while ((c=*x)!=0 && c!='>' && !SPACE(c)) {
   821    822                           if (c=='&') {
   822    823                               ampersandSeen = 1;
   823    824                           }
   824    825                           x++;
   825    826                       }
   826    827                       if (c==0) {
   827         -                        RetError("Missing \">\"",(start-xml));
          828  +                        RetError("Missing \">\"",(domLength)(start-xml));
   828    829                       }
   829         -                    nArgVal = x - ArgVal;
          830  +                    nArgVal = (domLength)(x - ArgVal);
   830    831                   }
   831    832   
   832    833                   
   833    834   #ifdef TDOM_NS
   834    835                   /*------------------------------------------------------------
   835    836                   |   handle namespace attributes or normal ones
   836    837                   \------------------------------------------------------------*/
................................................................................
   849    850                       attrnode->nodeValue   = (char*)MALLOC(nArgVal+1);
   850    851                       attrnode->valueLength = nArgVal;
   851    852                       memmove(attrnode->nodeValue, ArgVal, nArgVal);
   852    853                       *(attrnode->nodeValue + nArgVal) = 0;
   853    854                       if (ampersandSeen) {
   854    855                           if (!TranslateEntityRefs(attrnode->nodeValue,
   855    856                                                    &(attrnode->valueLength) )) {
   856         -                            RetError("Entity parsing error",(start-xml));
          857  +                            RetError("Entity parsing error",(domLength)(start-xml));
   857    858                           }
   858    859                       }
   859    860                       
   860    861                       if (xmlns[5] == ':') {
   861    862                           if (domIsNamespaceInScope (activeNS, activeNSpos,
   862    863                                                      &(xmlns[6]),
   863    864                                                      (char*)attrnode->nodeValue))
................................................................................
   910    911                       attrnode->nodeValue   = (char*)MALLOC(nArgVal+1);
   911    912                       attrnode->valueLength = nArgVal;
   912    913                       memmove(attrnode->nodeValue, ArgVal, nArgVal);
   913    914                       *(attrnode->nodeValue + nArgVal) = 0;
   914    915                       if (ampersandSeen) {
   915    916                           if (!TranslateEntityRefs(attrnode->nodeValue,
   916    917                                                    &(attrnode->valueLength) )) {
   917         -                            RetError("Entity parsing error", (start - xml));
          918  +                            RetError("Entity parsing error", (domLength)(start - xml));
   918    919                           }
   919    920                       }
   920    921                       if (attrList) {
   921    922                           lastAttr->nextSibling = attrnode;
   922    923                       } else {
   923    924                           attrList = attrnode;
   924    925                       }
................................................................................
   994    995               node->firstAttr = attrList;
   995    996   
   996    997   #endif
   997    998               if (*x=='/') {
   998    999                   hasContent = 0;
   999   1000                   x++;
  1000   1001                   if (*x!='>') {
  1001         -                    RetError("Syntax Error",(x - xml - 1) );
         1002  +                    RetError("Syntax Error",(domLength)(x - xml - 1));
  1002   1003                   }
  1003   1004   #ifdef TDOM_NS 
  1004   1005                   /* pop active namespaces */
  1005   1006                   while ( (activeNSpos >= 0) &&
  1006   1007                           (activeNS[activeNSpos].depth == depth) )
  1007   1008                   {
  1008   1009                       activeNSpos--;
................................................................................
  1029   1030               }
  1030   1031           }
  1031   1032       }
  1032   1033       if (forest && parent_node == parent) {
  1033   1034           FREE ((char *) activeNS);
  1034   1035           return TCL_OK;
  1035   1036       }
  1036         -    RetError("Unexpected end",(x - xml) );
         1037  +    RetError("Unexpected end",(domLength)(x - xml));
  1037   1038   
  1038   1039   } /* XML_SimpleParse */
  1039   1040   
  1040   1041   
  1041   1042   
  1042   1043   /*----------------------------------------------------------------------------
  1043   1044   |   XML_SimpleParseDocument

Changes to tdom.m4.

   709    709           TDOM_STUB_LIB_SPEC=${TDOM_BUILD_STUB_LIB_SPEC}
   710    710       fi
   711    711       AC_SUBST(TDOM_VERSION)
   712    712       AC_SUBST(TDOM_STUB_LIB_SPEC)
   713    713       AC_SUBST(TDOM_SRC_DIR)
   714    714   ])
   715    715   
   716         -#------------------------------------------------------------------------
   717         -# TDOM_EXPORT_CONFIG --
   718         -#
   719         -#	Define the data to insert into the ${PACKAGE_NAME}Config.sh file
   720         -#
   721         -# Arguments:
   722         -#	None
   723         -#
   724         -# Results:
   725         -#	Subst the following vars:
   726         -#
   727         -#------------------------------------------------------------------------
   728         -
   729         -AC_DEFUN(TDOM_EXPORT_CONFIG, [
   730         -    #--------------------------------------------------------------------
   731         -    # These are for ${PACKAGE_NAME}Config.sh
   732         -    #--------------------------------------------------------------------
   733         -
   734         -    # pkglibdir must be a fully qualified path and (not ${exec_prefix}/lib)
   735         -    eval pkglibdir="[$]{libdir}/${PACKAGE_NAME}${PACKAGE_VERSION}"
   736         -    if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
   737         -	eval PKG_STUB_LIB_FLAG="-l${PACKAGE_NAME}stub${PACKAGE_VERSION}"
   738         -    else
   739         -	eval PKG_STUB_LIB_FLAG="-l${PACKAGE_NAME}stub`echo ${PACKAGE_VERSION} | tr -d .`"
   740         -    fi
   741         -    PKG_BUILD_STUB_LIB_SPEC="-L`pwd` ${PKG_STUB_LIB_FLAG}"
   742         -    PKG_STUB_LIB_SPEC="-L${pkglibdir} ${PKG_STUB_LIB_FLAG}"
   743         -    PKG_BUILD_STUB_LIB_PATH="`pwd`/[$]{PKG_STUB_LIB_FILE}"
   744         -    PKG_STUB_LIB_PATH="${pkglibdir}/[$]{PKG_STUB_LIB_FILE}"
   745         -
   746         -    AC_SUBST(PKG_BUILD_STUB_LIB_SPEC)
   747         -    AC_SUBST(PKG_STUB_LIB_SPEC)
   748         -    AC_SUBST(PKG_BUILD_STUB_LIB_PATH)
   749         -    AC_SUBST(PKG_STUB_LIB_PATH)
   750         -])
   751         -
   752    716   # Local Variables:
   753    717   # mode: autoconf
   754    718   # End:
   755    719   # EOF

Changes to tdomConfig.sh.in.

    29     29   #
    30     30   TDOM_STUB_LIB_FILE=@PKG_STUB_LIB_FILE@
    31     31   
    32     32   #
    33     33   # String to pass to linker to pick up the tDOM library from
    34     34   # its build directory.
    35     35   #
    36         -TDOM_BUILD_STUB_LIB_SPEC='@PKG_BUILD_STUB_LIB_SPEC@'
           36  +TDOM_BUILD_STUB_LIB_SPEC='@tdom_BUILD_STUB_LIB_SPEC@'
    37     37   
    38     38   #
    39     39   # String to pass to linker to pick up the tDOM library from
    40     40   # its installed directory.
    41     41   #
    42         -TDOM_STUB_LIB_SPEC='@PKG_STUB_LIB_SPEC@'
           42  +TDOM_STUB_LIB_SPEC='@tdom_STUB_LIB_SPEC@'
    43     43   
    44     44   # String to pass to linker to pick up the TDOM stub library from its
    45     45   # build directory.
    46     46   #
    47         -TDOM_BUILD_STUB_LIB_PATH='@PKG_BUILD_STUB_LIB_PATH@'
           47  +TDOM_BUILD_STUB_LIB_PATH='@tdom_BUILD_STUB_LIB_PATH@'
    48     48   
    49     49   # String to pass to linker to pick up the TDOM stub library from its
    50     50   # installed directory.
    51     51   #
    52         -TDOM_STUB_LIB_PATH='@PKG_STUB_LIB_PATH@'
           52  +TDOM_STUB_LIB_PATH='@tdom_STUB_LIB_PATH@'
    53     53   
    54     54   #
    55     55   # Location of the top-level source directories from which tDOM
    56     56   # was built.  This is the directory that contains generic, unix,
    57     57   # win etc. If tDOM was compiled in a different place than the 
    58     58   # directory containing the source files, this points to the 
    59     59   # location of the sources, not the location where tDOM was compiled.
    60     60   #
    61     61   TDOM_SRC_DIR='@srcdir@'
    62     62   
    63     63   # EOF