Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Replaced the last two atof(). |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
52d6965abbd3a71ae1c02be611067483 |
User & Date: | rolf 2019-07-10 21:56:40.188 |
Context
2019-07-10
| ||
23:27 | Fixed seg fault in reporting certain invalid xpath exprs with a number with nr of digits in a certain range. check-in: ad8242fa18 user: rolf tags: trunk | |
21:56 | Replaced the last two atof(). check-in: 52d6965abb user: rolf tags: trunk | |
2019-07-06
| ||
22:07 | Ups ... I obviously forgot to update the VERSION file at the latest expat update (to 2.2.6). check-in: 35e1b761e1 user: rolf tags: trunk | |
Changes
Changes to generic/domxpath.c.
︙ | ︙ | |||
673 674 675 676 677 678 679 | int *useNamespaceAxis, xpathParseVarCB *varParseCB, char **errMsg ) { int l, allocated; int i, k, start, offset; | | | 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 | int *useNamespaceAxis, xpathParseVarCB *varParseCB, char **errMsg ) { int l, allocated; int i, k, start, offset; char delim, *ps, save, tmpErr[80], *tailptr; const char *uri; XPathTokens tokens; int token = EOS; tokens = (XPathTokens)MALLOC(INITIAL_SIZE * sizeof(XPathToken)); if (tokens == NULL) { |
︙ | ︙ | |||
1107 1108 1109 1110 1111 1112 1113 | tokens[l].intvalue = strtol(ps, NULL, 10); if (errno == ERANGE && ( tokens[l].intvalue == LONG_MAX || tokens[l].intvalue == LONG_MIN)) { token = REALNUMBER; } } | | > > > > > > | 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 | tokens[l].intvalue = strtol(ps, NULL, 10); if (errno == ERANGE && ( tokens[l].intvalue == LONG_MAX || tokens[l].intvalue == LONG_MIN)) { token = REALNUMBER; } } tokens[l].realvalue = strtod(ps, &tailptr); xpath[i--] = save; if (tokens[l].realvalue == 0.0 && tailptr == ps) { sprintf (tmpErr, "Number value too large " "at position %d", i); *errMsg = tdomstrdup (tmpErr); return tokens; } } else { sprintf (tmpErr, "Unexpected character '%c' at " "position %d", xpath[i], i); *errMsg = tdomstrdup (tmpErr); return tokens; } break; |
︙ | ︙ | |||
2268 2269 2270 2271 2272 2273 2274 | ast *t, char **errMsg ) { XPathTokens tokens; int i, l, len, newlen, slen; int useNamespaceAxis = 0; | | | 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 | ast *t, char **errMsg ) { XPathTokens tokens; int i, l, len, newlen, slen; int useNamespaceAxis = 0; char tmp[900]; DDBG(fprintf(stderr, "\nLex output following tokens for '%s':\n", xpath);) *errMsg = NULL; tokens = xpathLexer(xpath, exprContext, prefixMappings, &useNamespaceAxis, varParseCB, errMsg); if (*errMsg != NULL) { if (tokens != NULL) xpathFreeTokens (tokens); |
︙ | ︙ |
Changes to generic/domxslt.c.
︙ | ︙ | |||
2858 2859 2860 2861 2862 2863 2864 | xsltState *xs, domNode *node, double precedence, char **errMsg ) { xsltTemplate *tpl, *t; | | | 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 | xsltState *xs, domNode *node, double precedence, char **errMsg ) { xsltTemplate *tpl, *t; char *prioStr, *str, prefix[MAX_PREFIX_LEN], *tailptr; const char *localName; int rc, hnew; domNS *ns; Tcl_HashEntry *h; Tcl_DString dStr; xsltSubDoc *sDoc; |
︙ | ︙ | |||
2966 2967 2968 2969 2970 2971 2972 | tpl->prio = 0.5; tpl->content = node; tpl->precedence = precedence; tpl->next = NULL; prioStr = getAttr(node,"priority", a_prio); if (prioStr) { | | > > > > > | > > > | 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 | tpl->prio = 0.5; tpl->content = node; tpl->precedence = precedence; tpl->next = NULL; prioStr = getAttr(node,"priority", a_prio); if (prioStr) { tpl->prio = strtod (prioStr, &tailptr); if (tpl->prio == 0.0 && prioStr == tailptr) { /* If the template has a name attribute, it is already stored in in the namedTemplates hash table and will be freed. */ if (!tpl->name) { FREE ((char*)tpl); } return -1; } } sDoc = xs->subDocs; while (sDoc) { if (sDoc->doc == node->ownerDocument) break; sDoc = sDoc->next; } tpl->sDoc = sDoc; |
︙ | ︙ |