diff options
| author | Moriyoshi Koizumi <moriyoshi@php.net> | 2003-05-07 20:06:42 +0000 |
|---|---|---|
| committer | Moriyoshi Koizumi <moriyoshi@php.net> | 2003-05-07 20:06:42 +0000 |
| commit | 891bd02e104c37adad9b95a7399d5eb8eece61a8 (patch) | |
| tree | 6d4334b894a6b4e541a03669e03dd0944388c250 /ext/xml/compat.c | |
| parent | cced1b26ec9a04f6b0b656c4170e0e983b2ac2e0 (diff) | |
| download | php-git-891bd02e104c37adad9b95a7399d5eb8eece61a8.tar.gz | |
Added missing object initialisation
Added missing sanity checks
Diffstat (limited to 'ext/xml/compat.c')
| -rw-r--r-- | ext/xml/compat.c | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/ext/xml/compat.c b/ext/xml/compat.c index bfb224df44..304de2c447 100644 --- a/ext/xml/compat.c +++ b/ext/xml/compat.c @@ -86,6 +86,10 @@ _start_element_handler(void *user, const xmlChar *name, const xmlChar **attribut XML_Parser parser = (XML_Parser) user; xmlChar *qualified_name = NULL; + if (parser->h_start_element == NULL) { + return; + } + if (parser->namespace) { _find_namespace_decl(parser, name, attributes); _qualify_namespace(parser, name, &qualified_name); @@ -104,6 +108,10 @@ _end_element_handler(void *user, const xmlChar *name) xmlChar *qualified_name; XML_Parser parser = (XML_Parser) user; + if (parser->h_end_element == NULL) { + return; + } + if (parser->namespace) { xmlChar *nsname; @@ -127,6 +135,10 @@ _cdata_handler(void *user, const xmlChar *cdata, int cdata_len) { XML_Parser parser = (XML_Parser) user; + if (parser->h_cdata == NULL) { + return; + } + parser->h_cdata(parser->user, (const XML_Char *) cdata, cdata_len); } @@ -135,6 +147,10 @@ _pi_handler(void *user, const xmlChar *target, const xmlChar *data) { XML_Parser parser = (XML_Parser) user; + if (parser->h_pi == NULL) { + return; + } + parser->h_pi(parser->user, (const XML_Char *) target, (const XML_Char *) data); } @@ -147,6 +163,10 @@ _unparsed_entity_decl_handler(void *user, { XML_Parser parser = (XML_Parser) user; + if (parser->h_unparsed_entity_decl == NULL) { + return; + } + parser->h_unparsed_entity_decl(parser->user, name, NULL, sys_id, pub_id, notation); } @@ -155,6 +175,10 @@ _notation_decl_handler(void *user, const xmlChar *notation, const xmlChar *sys_i { XML_Parser parser = (XML_Parser) user; + if (parser->h_notation_decl == NULL) { + return; + } + parser->h_notation_decl(parser->user, notation, NULL, sys_id, pub_id); } @@ -163,7 +187,11 @@ _external_entity_ref_handler(void *user, const xmlChar *names, int type, const x { XML_Parser parser = (XML_Parser) user; - parser->h_external_entity_ref(parser->user, names, NULL, sys_id, pub_id); + if (parser->h_external_entity_ref == NULL) { + return; + } + + parser->h_external_entity_ref(parser, names, NULL, sys_id, pub_id); } static xmlSAXHandler @@ -240,6 +268,7 @@ XML_ParserCreate_MM(const XML_Char *encoding, const XML_Memory_Handling_Suite *m xmlMemSetup(memsuite->free_fcn, memsuite->malloc_fcn, memsuite->realloc_fcn, _expat_cpt_intn_strdup); /* WHOCANFIXME: not reentrant ! */ parser = (XML_Parser) memsuite->malloc_fcn(sizeof(struct _XML_Parser)); + memset(parser, 0, sizeof(struct _XML_Parser)); parser->namespace = 0; parser->mem_hdlrs = *memsuite; parser->parser = xmlCreatePushParserCtxt((xmlSAXHandlerPtr) &php_xml_compat_handlers, (void *) parser, NULL, 0, NULL); |
