diff options
Diffstat (limited to 'src/parser.c')
-rw-r--r-- | src/parser.c | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/src/parser.c b/src/parser.c index 5423922..671e129 100644 --- a/src/parser.c +++ b/src/parser.c @@ -25,9 +25,6 @@ struct hubbub_parser { parserutils_inputstream *stream; /**< Input stream instance */ hubbub_tokeniser *tok; /**< Tokeniser instance */ hubbub_treebuilder *tb; /**< Treebuilder instance */ - - hubbub_allocator_fn alloc; /**< Memory (de)allocation function */ - void *pw; /**< Client data */ }; /** @@ -35,8 +32,6 @@ struct hubbub_parser { * * \param enc Source document encoding, or NULL to autodetect * \param fix_enc Permit fixing up of encoding if it's frequently misused - * \param alloc Memory (de)allocation function - * \param pw Pointer to client-specific private data (may be NULL) * \param parser Pointer to location to receive parser instance * \return HUBBUB_OK on success, * HUBBUB_BADPARM on bad parameters, @@ -44,16 +39,16 @@ struct hubbub_parser { * HUBBUB_BADENCODING if ::enc is unsupported */ hubbub_error hubbub_parser_create(const char *enc, bool fix_enc, - hubbub_allocator_fn alloc, void *pw, hubbub_parser **parser) + hubbub_parser **parser) { parserutils_error perror; hubbub_error error; hubbub_parser *p; - if (alloc == NULL || parser == NULL) + if (parser == NULL) return HUBBUB_BADPARM; - p = alloc(NULL, sizeof(hubbub_parser), pw); + p = malloc(sizeof(hubbub_parser)); if (p == NULL) return HUBBUB_NOMEM; @@ -72,30 +67,27 @@ hubbub_error hubbub_parser_create(const char *enc, bool fix_enc, perror = parserutils_inputstream_create(enc, enc != NULL ? HUBBUB_CHARSET_CONFIDENT : HUBBUB_CHARSET_UNKNOWN, - hubbub_charset_extract, alloc, pw, &p->stream); + hubbub_charset_extract, &p->stream); if (perror != PARSERUTILS_OK) { - alloc(p, 0, pw); + free(p); return hubbub_error_from_parserutils_error(perror); } - error = hubbub_tokeniser_create(p->stream, alloc, pw, &p->tok); + error = hubbub_tokeniser_create(p->stream, &p->tok); if (error != HUBBUB_OK) { parserutils_inputstream_destroy(p->stream); - alloc(p, 0, pw); + free(p); return error; } - error = hubbub_treebuilder_create(p->tok, alloc, pw, &p->tb); + error = hubbub_treebuilder_create(p->tok, &p->tb); if (error != HUBBUB_OK) { hubbub_tokeniser_destroy(p->tok); parserutils_inputstream_destroy(p->stream); - alloc(p, 0, pw); + free(p); return error; } - p->alloc = alloc; - p->pw = pw; - *parser = p; return HUBBUB_OK; @@ -118,7 +110,7 @@ hubbub_error hubbub_parser_destroy(hubbub_parser *parser) parserutils_inputstream_destroy(parser->stream); - parser->alloc(parser, 0, parser->pw); + free(parser); return HUBBUB_OK; } |