diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2009-06-20 11:58:54 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2009-06-20 11:58:54 +0000 |
commit | ba3d2558eff56f74a9c4625d5582bc78ee6a5e90 (patch) | |
tree | 79f3733cb05910b611285a10c65abb322e0a779f /src/parser.c | |
parent | 60fbc28f0cdbb2aa008ef5bfd40dccd9e54b5ada (diff) | |
download | libhubbub-ba3d2558eff56f74a9c4625d5582bc78ee6a5e90.tar.gz libhubbub-ba3d2558eff56f74a9c4625d5582bc78ee6a5e90.tar.bz2 |
Fix broken error checking and return in hubbub_parser_completed.
Avoid potentially broken passing of address of an enum where uint32_t * is expected.
Pedantic casting for Norcroft.
Particularly ugly #ifdef __CC_NORCROFT in utils.h to ensure we have a strncasecmp implementation with that compiler/libraries.
svn path=/trunk/hubbub/; revision=7892
Diffstat (limited to 'src/parser.c')
-rw-r--r-- | src/parser.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/parser.c b/src/parser.c index 73852de..9d54049 100644 --- a/src/parser.c +++ b/src/parser.c @@ -60,7 +60,7 @@ hubbub_error hubbub_parser_create(const char *enc, bool fix_enc, /* If we have an encoding and we're permitted to fix up likely broken * ones, then attempt to do so. */ if (enc != NULL && fix_enc == true) { - uint16_t mibenum = parserutils_charset_mibenum_from_name(enc, + uint16_t mibenum = parserutils_charset_mibenum_from_name(enc, strlen(enc)); if (mibenum != 0) { @@ -143,7 +143,7 @@ hubbub_error hubbub_parser_setopt(hubbub_parser *parser, switch (type) { case HUBBUB_PARSER_TOKEN_HANDLER: if (parser->tb != NULL) { - /* Client is defining their own token handler, + /* Client is defining their own token handler, * so we must destroy the default treebuilder */ hubbub_treebuilder_destroy(parser->tb); parser->tb = NULL; @@ -295,8 +295,8 @@ hubbub_error hubbub_parser_completed(hubbub_parser *parser) return HUBBUB_BADPARM; perror = parserutils_inputstream_append(parser->stream, NULL, 0); - if (perror != HUBBUB_OK) - return !HUBBUB_OK; + if (perror != PARSERUTILS_OK) + return hubbub_error_from_parserutils_error(perror); error = hubbub_tokeniser_run(parser->tok); if (error != HUBBUB_OK) @@ -315,9 +315,16 @@ hubbub_error hubbub_parser_completed(hubbub_parser *parser) const char *hubbub_parser_read_charset(hubbub_parser *parser, hubbub_charset_source *source) { + const char *name; + uint32_t src; + if (parser == NULL || source == NULL) return NULL; - return parserutils_inputstream_read_charset(parser->stream, source); + name = parserutils_inputstream_read_charset(parser->stream, &src); + + *source = (hubbub_charset_source) src; + + return name; } |