diff options
author | Dave Beckett <dave@dajobe.org> | 2012-01-28 18:00:08 -0800 |
---|---|---|
committer | Dave Beckett <dave@dajobe.org> | 2012-01-28 18:01:08 -0800 |
commit | a9ddbb9d804264ed6b9cf9f6d46eed77b515b5d1 (patch) | |
tree | 95d9d9b6c19e62a29986cd3ae9573810861e42d9 /src/raptor_sax2.c | |
parent | 6eabc4694a3e2a3797df7d375d0aa8acfdb42237 (diff) | |
download | raptor-a9ddbb9d804264ed6b9cf9f6d46eed77b515b5d1.tar.gz |
Add internal SAX2 enabled flag for enabling/disabling callbacks
Diffstat (limited to 'src/raptor_sax2.c')
-rw-r--r-- | src/raptor_sax2.c | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/src/raptor_sax2.c b/src/raptor_sax2.c index e2f87c4f..7e2d561e 100644 --- a/src/raptor_sax2.c +++ b/src/raptor_sax2.c @@ -100,6 +100,8 @@ raptor_new_sax2(raptor_world *world, raptor_locator *locator, sax2->locator = locator; sax2->user_data = user_data; + sax2->enabled = 1; + raptor_object_options_init(&sax2->options, RAPTOR_OPTION_AREA_SAX2); return sax2; @@ -705,7 +707,7 @@ raptor_sax2_start_element(void* user_data, const unsigned char *name, unsigned char *xml_language = NULL; raptor_uri *xml_base = NULL; - if(sax2->failed) + if(sax2->failed || !sax2->enabled) return; #ifdef RAPTOR_XML_EXPAT @@ -925,7 +927,7 @@ raptor_sax2_end_element(void* user_data, const unsigned char *name) raptor_sax2* sax2 = (raptor_sax2*)user_data; raptor_xml_element* xml_element; - if(sax2->failed) + if(sax2->failed || !sax2->enabled) return; #ifdef RAPTOR_XML_EXPAT @@ -963,7 +965,11 @@ void raptor_sax2_characters(void* user_data, const unsigned char *s, int len) { raptor_sax2* sax2 = (raptor_sax2*)user_data; - if(!sax2->failed && sax2->characters_handler) + + if(sax2->failed || !sax2->enabled) + return; + + if(sax2->characters_handler) sax2->characters_handler(sax2->user_data, sax2->current_element, s, len); } @@ -973,13 +979,17 @@ void raptor_sax2_cdata(void* user_data, const unsigned char *s, int len) { raptor_sax2* sax2 = (raptor_sax2*)user_data; + #ifdef RAPTOR_XML_EXPAT #ifdef EXPAT_UTF8_BOM_CRASH sax2->tokens_count++; #endif #endif - if(!sax2->failed && sax2->cdata_handler) + if(sax2->failed || !sax2->enabled) + return; + + if(sax2->cdata_handler) sax2->cdata_handler(sax2->user_data, sax2->current_element, s, len); } @@ -989,7 +999,11 @@ void raptor_sax2_comment(void* user_data, const unsigned char *s) { raptor_sax2* sax2 = (raptor_sax2*)user_data; - if(!sax2->failed && sax2->comment_handler) + + if(sax2->failed || !sax2->enabled) + return; + + if(sax2->comment_handler) sax2->comment_handler(sax2->user_data, sax2->current_element, s); } @@ -1004,7 +1018,11 @@ raptor_sax2_unparsed_entity_decl(void* user_data, const unsigned char* notationName) { raptor_sax2* sax2 = (raptor_sax2*)user_data; - if(!sax2->failed && sax2->unparsed_entity_decl_handler) + + if(sax2->failed || !sax2->enabled) + return; + + if(sax2->unparsed_entity_decl_handler) sax2->unparsed_entity_decl_handler(sax2->user_data, entityName, base, systemId, publicId, notationName); @@ -1021,7 +1039,7 @@ raptor_sax2_external_entity_ref(void* user_data, { raptor_sax2* sax2 = (raptor_sax2*)user_data; - if(sax2->failed) + if(sax2->failed || !sax2->enabled) return 0; if(sax2->external_entity_ref_handler) |