Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(422)

Side by Side Diff: third_party/libxml/SAX2.c

Issue 2951008: Update libxml to 2.7.7. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * SAX2.c : Default SAX2 handler to build a tree. 2 * SAX2.c : Default SAX2 handler to build a tree.
3 * 3 *
4 * See Copyright for the status of this software. 4 * See Copyright for the status of this software.
5 * 5 *
6 * Daniel Veillard <daniel@veillard.com> 6 * Daniel Veillard <daniel@veillard.com>
7 */ 7 */
8 8
9 9
10 #define IN_LIBXML 10 #define IN_LIBXML
11 #include "libxml.h" 11 #include "libxml.h"
12 #include <stdlib.h> 12 #include <stdlib.h>
13 #include <string.h> 13 #include <string.h>
14 #include <limits.h>
14 #include <libxml/xmlmemory.h> 15 #include <libxml/xmlmemory.h>
15 #include <libxml/tree.h> 16 #include <libxml/tree.h>
16 #include <libxml/parser.h> 17 #include <libxml/parser.h>
17 #include <libxml/parserInternals.h> 18 #include <libxml/parserInternals.h>
18 #include <libxml/valid.h> 19 #include <libxml/valid.h>
19 #include <libxml/entities.h> 20 #include <libxml/entities.h>
20 #include <libxml/xmlerror.h> 21 #include <libxml/xmlerror.h>
21 #include <libxml/debugXML.h> 22 #include <libxml/debugXML.h>
22 #include <libxml/xmlIO.h> 23 #include <libxml/xmlIO.h>
23 #include <libxml/SAX.h> 24 #include <libxml/SAX.h>
24 #include <libxml/uri.h> 25 #include <libxml/uri.h>
25 #include <libxml/valid.h> 26 #include <libxml/valid.h>
26 #include <libxml/HTMLtree.h> 27 #include <libxml/HTMLtree.h>
27 #include <libxml/globals.h> 28 #include <libxml/globals.h>
28 29
30 /* Define SIZE_T_MAX unless defined through <limits.h>. */
31 #ifndef SIZE_T_MAX
32 # define SIZE_T_MAX ((size_t)-1)
33 #endif /* !SIZE_T_MAX */
34
29 /* #define DEBUG_SAX2 */ 35 /* #define DEBUG_SAX2 */
30 /* #define DEBUG_SAX2_TREE */ 36 /* #define DEBUG_SAX2_TREE */
31 37
32 /** 38 /**
33 * TODO: 39 * TODO:
34 * 40 *
35 * macro to flag unimplemented blocks 41 * macro to flag unimplemented blocks
36 * XML_CATALOG_PREFER user env to select between system/public prefered 42 * XML_CATALOG_PREFER user env to select between system/public prefered
37 * option. C.f. Richard Tobin <richard@cogsci.ed.ac.uk> 43 * option. C.f. Richard Tobin <richard@cogsci.ed.ac.uk>
38 *> Just FYI, I am using an environment variable XML_CATALOG_PREFER with 44 *> Just FYI, I am using an environment variable XML_CATALOG_PREFER with
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 ret->ExternalID, &children); 579 ret->ExternalID, &children);
574 if (val == 0) { 580 if (val == 0) {
575 xmlAddChildList((xmlNodePtr) ret, children); 581 xmlAddChildList((xmlNodePtr) ret, children);
576 } else { 582 } else {
577 xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_PROCESSING, 583 xmlFatalErrMsg(ctxt, XML_ERR_ENTITY_PROCESSING,
578 "Failure to process entity %s\n", name, NULL); 584 "Failure to process entity %s\n", name, NULL);
579 ctxt->validate = 0; 585 ctxt->validate = 0;
580 return(NULL); 586 return(NULL);
581 } 587 }
582 ret->owner = 1; 588 ret->owner = 1;
583 » ret->checked = 1; 589 » if (ret->checked == 0)
590 » ret->checked = 1;
584 } 591 }
585 return(ret); 592 return(ret);
586 } 593 }
587 594
588 /** 595 /**
589 * xmlSAX2GetParameterEntity: 596 * xmlSAX2GetParameterEntity:
590 * @ctx: the user data (XML parser context) 597 * @ctx: the user data (XML parser context)
591 * @name: The entity name 598 * @name: The entity name
592 * 599 *
593 * Get a parameter entity by name 600 * Get a parameter entity by name
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
950 if (ctx == NULL) return; 957 if (ctx == NULL) return;
951 958
952 #ifdef DEBUG_SAX 959 #ifdef DEBUG_SAX
953 xmlGenericError(xmlGenericErrorContext, 960 xmlGenericError(xmlGenericErrorContext,
954 "SAX.xmlSAX2StartDocument()\n"); 961 "SAX.xmlSAX2StartDocument()\n");
955 #endif 962 #endif
956 if (ctxt->html) { 963 if (ctxt->html) {
957 #ifdef LIBXML_HTML_ENABLED 964 #ifdef LIBXML_HTML_ENABLED
958 if (ctxt->myDoc == NULL) 965 if (ctxt->myDoc == NULL)
959 ctxt->myDoc = htmlNewDocNoDtD(NULL, NULL); 966 ctxt->myDoc = htmlNewDocNoDtD(NULL, NULL);
967 ctxt->myDoc->properties = XML_DOC_HTML;
968 ctxt->myDoc->parseFlags = ctxt->options;
960 if (ctxt->myDoc == NULL) { 969 if (ctxt->myDoc == NULL) {
961 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartDocument"); 970 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartDocument");
962 return; 971 return;
963 } 972 }
964 #else 973 #else
965 xmlGenericError(xmlGenericErrorContext, 974 xmlGenericError(xmlGenericErrorContext,
966 "libxml2 built without HTML support\n"); 975 "libxml2 built without HTML support\n");
967 ctxt->errNo = XML_ERR_INTERNAL_ERROR; 976 ctxt->errNo = XML_ERR_INTERNAL_ERROR;
968 ctxt->instate = XML_PARSER_EOF; 977 ctxt->instate = XML_PARSER_EOF;
969 ctxt->disableSAX = 1; 978 ctxt->disableSAX = 1;
970 return; 979 return;
971 #endif 980 #endif
972 } else { 981 } else {
973 doc = ctxt->myDoc = xmlNewDoc(ctxt->version); 982 doc = ctxt->myDoc = xmlNewDoc(ctxt->version);
974 if (doc != NULL) { 983 if (doc != NULL) {
984 doc->properties = 0;
985 if (ctxt->options & XML_PARSE_OLD10)
986 doc->properties |= XML_DOC_OLD10;
987 doc->parseFlags = ctxt->options;
975 if (ctxt->encoding != NULL) 988 if (ctxt->encoding != NULL)
976 doc->encoding = xmlStrdup(ctxt->encoding); 989 doc->encoding = xmlStrdup(ctxt->encoding);
977 else 990 else
978 doc->encoding = NULL; 991 doc->encoding = NULL;
979 doc->standalone = ctxt->standalone; 992 doc->standalone = ctxt->standalone;
980 } else { 993 } else {
981 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartDocument"); 994 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartDocument");
982 return; 995 return;
983 } 996 }
984 if ((ctxt->dictNames) && (doc != NULL)) { 997 if ((ctxt->dictNames) && (doc != NULL)) {
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1085 name = xmlStrdup(fullname); 1098 name = xmlStrdup(fullname);
1086 } 1099 }
1087 } 1100 }
1088 if (name == NULL) { 1101 if (name == NULL) {
1089 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement"); 1102 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement");
1090 if (ns != NULL) 1103 if (ns != NULL)
1091 xmlFree(ns); 1104 xmlFree(ns);
1092 return; 1105 return;
1093 } 1106 }
1094 1107
1108 #ifdef LIBXML_HTML_ENABLED
1109 if ((ctxt->html) &&
1110 (value == NULL) && (htmlIsBooleanAttr(fullname))) {
1111 nval = xmlStrdup(fullname);
1112 value = (const xmlChar *) nval;
1113 } else
1114 #endif
1115 {
1095 #ifdef LIBXML_VALID_ENABLED 1116 #ifdef LIBXML_VALID_ENABLED
1096 /* 1117 /*
1097 * Do the last stage of the attribute normalization 1118 * Do the last stage of the attribute normalization
1098 * Needed for HTML too: 1119 * Needed for HTML too:
1099 * http://www.w3.org/TR/html4/types.html#h-6.2 1120 * http://www.w3.org/TR/html4/types.html#h-6.2
1100 */ 1121 */
1101 ctxt->vctxt.valid = 1; 1122 ctxt->vctxt.valid = 1;
1102 nval = xmlValidCtxtNormalizeAttributeValue(&ctxt->vctxt, 1123 nval = xmlValidCtxtNormalizeAttributeValue(&ctxt->vctxt,
1103 » ctxt->myDoc, ctxt->node, 1124 ctxt->myDoc, ctxt->node,
1104 » » » » » fullname, value); 1125 fullname, value);
1105 if (ctxt->vctxt.valid != 1) { 1126 if (ctxt->vctxt.valid != 1) {
1106 » ctxt->valid = 0; 1127 ctxt->valid = 0;
1128 }
1129 if (nval != NULL)
1130 value = nval;
1131 #else
1132 nval = NULL;
1133 #endif /* LIBXML_VALID_ENABLED */
1107 } 1134 }
1108 if (nval != NULL)
1109 value = nval;
1110 #else
1111 nval = NULL;
1112 #endif /* LIBXML_VALID_ENABLED */
1113 1135
1114 /* 1136 /*
1115 * Check whether it's a namespace definition 1137 * Check whether it's a namespace definition
1116 */ 1138 */
1117 if ((!ctxt->html) && (ns == NULL) && 1139 if ((!ctxt->html) && (ns == NULL) &&
1118 (name[0] == 'x') && (name[1] == 'm') && (name[2] == 'l') && 1140 (name[0] == 'x') && (name[1] == 'm') && (name[2] == 'l') &&
1119 (name[3] == 'n') && (name[4] == 's') && (name[5] == 0)) { 1141 (name[3] == 'n') && (name[4] == 's') && (name[5] == 0)) {
1120 xmlNsPtr nsret; 1142 xmlNsPtr nsret;
1121 xmlChar *val; 1143 xmlChar *val;
1122 1144
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
1226 if (name != NULL) 1248 if (name != NULL)
1227 xmlFree(name); 1249 xmlFree(name);
1228 if (nval != NULL) 1250 if (nval != NULL)
1229 xmlFree(nval); 1251 xmlFree(nval);
1230 if (val != value) 1252 if (val != value)
1231 xmlFree(val); 1253 xmlFree(val);
1232 return; 1254 return;
1233 } 1255 }
1234 1256
1235 if (ns != NULL) { 1257 if (ns != NULL) {
1236 xmlAttrPtr prop;
1237 namespace = xmlSearchNs(ctxt->myDoc, ctxt->node, ns); 1258 namespace = xmlSearchNs(ctxt->myDoc, ctxt->node, ns);
1259
1238 if (namespace == NULL) { 1260 if (namespace == NULL) {
1239 xmlNsErrMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE, 1261 xmlNsErrMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE,
1240 "Namespace prefix %s of attribute %s is not defined\n", 1262 "Namespace prefix %s of attribute %s is not defined\n",
1241 ns, name); 1263 ns, name);
1242 » } 1264 » } else {
1265 xmlAttrPtr prop;
1243 1266
1244 » prop = ctxt->node->properties; 1267 prop = ctxt->node->properties;
1245 » while (prop != NULL) { 1268 while (prop != NULL) {
1246 » if (prop->ns != NULL) { 1269 if (prop->ns != NULL) {
1247 » » if ((xmlStrEqual(name, prop->name)) && 1270 if ((xmlStrEqual(name, prop->name)) &&
1248 » » ((namespace == prop->ns) || 1271 ((namespace == prop->ns) ||
1249 » » (xmlStrEqual(namespace->href, prop->ns->href)))) { 1272 (xmlStrEqual(namespace->href, prop->ns->href)))) {
1250 » » » xmlNsErrMsg(ctxt, XML_ERR_ATTRIBUTE_REDEFINED, 1273 xmlNsErrMsg(ctxt, XML_ERR_ATTRIBUTE_REDEFINED,
1251 » » » "Attribute %s in %s redefined\n", 1274 "Attribute %s in %s redefined\n",
1252 » » » name, namespace->href); 1275 name, namespace->href);
1253 » » ctxt->wellFormed = 0; 1276 ctxt->wellFormed = 0;
1254 » » if (ctxt->recovery == 0) ctxt->disableSAX = 1; 1277 if (ctxt->recovery == 0) ctxt->disableSAX = 1;
1255 » » goto error; 1278 goto error;
1256 » » } 1279 }
1257 » } 1280 }
1258 » prop = prop->next; 1281 prop = prop->next;
1259 » } 1282 }
1283 }
1260 } else { 1284 } else {
1261 namespace = NULL; 1285 namespace = NULL;
1262 } 1286 }
1263 1287
1264 /* !!!!!! <a toto:arg="" xmlns:toto="http://toto.com"> */ 1288 /* !!!!!! <a toto:arg="" xmlns:toto="http://toto.com"> */
1265 ret = xmlNewNsPropEatName(ctxt->node, namespace, name, NULL); 1289 ret = xmlNewNsPropEatName(ctxt->node, namespace, name, NULL);
1266 1290
1267 if (ret != NULL) { 1291 if (ret != NULL) {
1268 if ((ctxt->replaceEntities == 0) && (!ctxt->html)) { 1292 if ((ctxt->replaceEntities == 0) && (!ctxt->html)) {
1269 xmlNodePtr tmp; 1293 xmlNodePtr tmp;
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
1400 attr->prefix) == NULL)) { 1424 attr->prefix) == NULL)) {
1401 xmlChar *fulln; 1425 xmlChar *fulln;
1402 1426
1403 if (attr->prefix != NULL) { 1427 if (attr->prefix != NULL) {
1404 fulln = xmlStrdup(attr->prefix); 1428 fulln = xmlStrdup(attr->prefix);
1405 fulln = xmlStrcat(fulln, BAD_CAST ":"); 1429 fulln = xmlStrcat(fulln, BAD_CAST ":");
1406 fulln = xmlStrcat(fulln, attr->name); 1430 fulln = xmlStrcat(fulln, attr->name);
1407 } else { 1431 } else {
1408 fulln = xmlStrdup(attr->name); 1432 fulln = xmlStrdup(attr->name);
1409 } 1433 }
1434 if (fulln == NULL) {
1435 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElement");
1436 break;
1437 }
1410 1438
1411 /* 1439 /*
1412 * Check that the attribute is not declared in the 1440 * Check that the attribute is not declared in the
1413 * serialization 1441 * serialization
1414 */ 1442 */
1415 att = NULL; 1443 att = NULL;
1416 if (atts != NULL) { 1444 if (atts != NULL) {
1417 i = 0; 1445 i = 0;
1418 att = atts[i]; 1446 att = atts[i];
1419 while (att != NULL) { 1447 while (att != NULL) {
1420 if (xmlStrEqual(att, fulln)) 1448 if (xmlStrEqual(att, fulln))
1421 break; 1449 break;
1422 i += 2; 1450 i += 2;
1423 att = atts[i]; 1451 att = atts[i];
1424 } 1452 }
1425 } 1453 }
1426 if (att == NULL) { 1454 if (att == NULL) {
1427 xmlErrValid(ctxt, XML_DTD_STANDALONE_DEFAULTED, 1455 xmlErrValid(ctxt, XML_DTD_STANDALONE_DEFAULTED,
1428 "standalone: attribute %s on %s defaulted from external subset\n", 1456 "standalone: attribute %s on %s defaulted from external subset\n",
1429 (const char *)fulln, 1457 (const char *)fulln,
1430 (const char *)attr->elem); 1458 (const char *)attr->elem);
1431 } 1459 }
1460 xmlFree(fulln);
1432 } 1461 }
1433 attr = attr->nexth; 1462 attr = attr->nexth;
1434 } 1463 }
1435 } 1464 }
1436 1465
1437 /* 1466 /*
1438 * Actually insert defaulted values when needed 1467 * Actually insert defaulted values when needed
1439 */ 1468 */
1440 attr = elemDecl->attributes; 1469 attr = elemDecl->attributes;
1441 while (attr != NULL) { 1470 while (attr != NULL) {
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
1830 if (intern == NULL) { 1859 if (intern == NULL) {
1831 ret->content = xmlStrndup(str, len); 1860 ret->content = xmlStrndup(str, len);
1832 if (ret->content == NULL) { 1861 if (ret->content == NULL) {
1833 xmlSAX2ErrMemory(ctxt, "xmlSAX2TextNode"); 1862 xmlSAX2ErrMemory(ctxt, "xmlSAX2TextNode");
1834 xmlFree(ret); 1863 xmlFree(ret);
1835 return(NULL); 1864 return(NULL);
1836 } 1865 }
1837 } else 1866 } else
1838 ret->content = (xmlChar *) intern; 1867 ret->content = (xmlChar *) intern;
1839 1868
1869 if (ctxt->input != NULL)
1870 ret->line = ctxt->input->line;
1871
1840 if ((__xmlRegisterCallbacks) && (xmlRegisterNodeDefaultValue)) 1872 if ((__xmlRegisterCallbacks) && (xmlRegisterNodeDefaultValue))
1841 xmlRegisterNodeDefaultValue(ret); 1873 xmlRegisterNodeDefaultValue(ret);
1842 return(ret); 1874 return(ret);
1843 } 1875 }
1844 1876
1845 #ifdef LIBXML_VALID_ENABLED 1877 #ifdef LIBXML_VALID_ENABLED
1846 /* 1878 /*
1847 * xmlSAX2DecodeAttrEntities: 1879 * xmlSAX2DecodeAttrEntities:
1848 * @ctxt: the parser context 1880 * @ctxt: the parser context
1849 * @str: the input string 1881 * @str: the input string
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after
2255 if ((ret->ns == NULL) && (xmlStrEqual(prefix, BAD_CAST "xml"))) { 2287 if ((ret->ns == NULL) && (xmlStrEqual(prefix, BAD_CAST "xml"))) {
2256 ret->ns = xmlSearchNs(ctxt->myDoc, ret, prefix); 2288 ret->ns = xmlSearchNs(ctxt->myDoc, ret, prefix);
2257 } 2289 }
2258 if (ret->ns == NULL) { 2290 if (ret->ns == NULL) {
2259 ns = xmlNewNs(ret, NULL, prefix); 2291 ns = xmlNewNs(ret, NULL, prefix);
2260 if (ns == NULL) { 2292 if (ns == NULL) {
2261 2293
2262 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs"); 2294 xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs");
2263 return; 2295 return;
2264 } 2296 }
2265 » xmlNsWarnMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE, 2297 if (prefix != NULL)
2266 » » » "Namespace prefix %s was not found\n", 2298 xmlNsWarnMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE,
2267 » » » prefix, NULL); 2299 "Namespace prefix %s was not found\n",
2300 prefix, NULL);
2301 else
2302 xmlNsWarnMsg(ctxt, XML_NS_ERR_UNDEFINED_NAMESPACE,
2303 "Namespace default prefix was not found\n",
2304 NULL, NULL);
2268 } 2305 }
2269 } 2306 }
2270 2307
2271 /* 2308 /*
2272 * process all the other attributes 2309 * process all the other attributes
2273 */ 2310 */
2274 if (nb_attributes > 0) { 2311 if (nb_attributes > 0) {
2275 for (j = 0,i = 0;i < nb_attributes;i++,j+=5) { 2312 for (j = 0,i = 0;i < nb_attributes;i++,j+=5) {
2276 xmlSAX2AttributeNs(ctxt, attributes[j], attributes[j+1], 2313 xmlSAX2AttributeNs(ctxt, attributes[j], attributes[j+1],
2277 attributes[j+3], attributes[j+4]); 2314 attributes[j+3], attributes[j+4]);
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
2438 * We try to minimaze realloc() uses and avoid copying 2475 * We try to minimaze realloc() uses and avoid copying
2439 * and recomputing length over and over. 2476 * and recomputing length over and over.
2440 */ 2477 */
2441 if (lastChild->content == (xmlChar *)&(lastChild->properties)) { 2478 if (lastChild->content == (xmlChar *)&(lastChild->properties)) {
2442 lastChild->content = xmlStrdup(lastChild->content); 2479 lastChild->content = xmlStrdup(lastChild->content);
2443 lastChild->properties = NULL; 2480 lastChild->properties = NULL;
2444 } else if ((ctxt->nodemem == ctxt->nodelen + 1) && 2481 } else if ((ctxt->nodemem == ctxt->nodelen + 1) &&
2445 (xmlDictOwns(ctxt->dict, lastChild->content))) { 2482 (xmlDictOwns(ctxt->dict, lastChild->content))) {
2446 lastChild->content = xmlStrdup(lastChild->content); 2483 lastChild->content = xmlStrdup(lastChild->content);
2447 } 2484 }
2485 if (((size_t)ctxt->nodelen + (size_t)len > XML_MAX_TEXT_LENGTH) &&
2486 ((ctxt->options & XML_PARSE_HUGE) == 0)) {
2487 xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters: huge text node");
2488 return;
2489 }
2490 if ((size_t)ctxt->nodelen > SIZE_T_MAX - (size_t)len ||
2491 (size_t)ctxt->nodemem + (size_t)len > SIZE_T_MAX / 2) {
2492 xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters overflow prevented");
2493 return;
2494 }
2448 if (ctxt->nodelen + len >= ctxt->nodemem) { 2495 if (ctxt->nodelen + len >= ctxt->nodemem) {
2449 xmlChar *newbuf; 2496 xmlChar *newbuf;
2450 » » int size; 2497 » » size_t size;
2451 2498
2452 size = ctxt->nodemem + len; 2499 size = ctxt->nodemem + len;
2453 size *= 2; 2500 size *= 2;
2454 newbuf = (xmlChar *) xmlRealloc(lastChild->content,size); 2501 newbuf = (xmlChar *) xmlRealloc(lastChild->content,size);
2455 if (newbuf == NULL) { 2502 if (newbuf == NULL) {
2456 xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters"); 2503 xmlSAX2ErrMemory(ctxt, "xmlSAX2Characters");
2457 return; 2504 return;
2458 } 2505 }
2459 ctxt->nodemem = size; 2506 ctxt->nodemem = size;
2460 lastChild->content = newbuf; 2507 lastChild->content = newbuf;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2521 2568
2522 if (ctx == NULL) return; 2569 if (ctx == NULL) return;
2523 parent = ctxt->node; 2570 parent = ctxt->node;
2524 #ifdef DEBUG_SAX 2571 #ifdef DEBUG_SAX
2525 xmlGenericError(xmlGenericErrorContext, 2572 xmlGenericError(xmlGenericErrorContext,
2526 "SAX.xmlSAX2ProcessingInstruction(%s, %s)\n", target, data); 2573 "SAX.xmlSAX2ProcessingInstruction(%s, %s)\n", target, data);
2527 #endif 2574 #endif
2528 2575
2529 ret = xmlNewDocPI(ctxt->myDoc, target, data); 2576 ret = xmlNewDocPI(ctxt->myDoc, target, data);
2530 if (ret == NULL) return; 2577 if (ret == NULL) return;
2531 parent = ctxt->node;
2532 2578
2533 if (ctxt->linenumbers) { 2579 if (ctxt->linenumbers) {
2534 if (ctxt->input != NULL) { 2580 if (ctxt->input != NULL) {
2535 if (ctxt->input->line < 65535) 2581 if (ctxt->input->line < 65535)
2536 ret->line = (short) ctxt->input->line; 2582 ret->line = (short) ctxt->input->line;
2537 else 2583 else
2538 ret->line = 65535; 2584 ret->line = 65535;
2539 } 2585 }
2540 } 2586 }
2541 if (ctxt->inSubset == 1) { 2587 if (ctxt->inSubset == 1) {
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
2890 */ 2936 */
2891 void 2937 void
2892 docbDefaultSAXHandlerInit(void) 2938 docbDefaultSAXHandlerInit(void)
2893 { 2939 {
2894 xmlSAX2InitDocbDefaultSAXHandler((xmlSAXHandlerPtr) &docbDefaultSAXHandler); 2940 xmlSAX2InitDocbDefaultSAXHandler((xmlSAXHandlerPtr) &docbDefaultSAXHandler);
2895 } 2941 }
2896 2942
2897 #endif /* LIBXML_DOCB_ENABLED */ 2943 #endif /* LIBXML_DOCB_ENABLED */
2898 #define bottom_SAX2 2944 #define bottom_SAX2
2899 #include "elfgcchack.h" 2945 #include "elfgcchack.h"
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698