From 528795a5daf767532a42b492db29deeadebcb249 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sat, 14 Dec 2013 23:15:34 +0000 Subject: Remove client allocation function and update for new lpu API. --- src/parser.c | 28 ++++++++++------------------ src/tokeniser/tokeniser.c | 36 ++++++++++++------------------------ src/tokeniser/tokeniser.h | 1 - src/treebuilder/in_body.c | 22 ++++++++++------------ src/treebuilder/internal.h | 3 --- src/treebuilder/treebuilder.c | 41 +++++++++++++++-------------------------- src/treebuilder/treebuilder.h | 1 - 7 files changed, 47 insertions(+), 85 deletions(-) (limited to 'src') 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; } diff --git a/src/tokeniser/tokeniser.c b/src/tokeniser/tokeniser.c index 2fff50d..a7e67a1 100644 --- a/src/tokeniser/tokeniser.c +++ b/src/tokeniser/tokeniser.c @@ -181,9 +181,6 @@ struct hubbub_tokeniser { hubbub_error_handler error_handler; /**< Error handling callback */ void *error_pw; /**< Error handler data */ - - hubbub_allocator_fn alloc; /**< Memory (de)allocation function */ - void *alloc_pw; /**< Client private data */ }; static hubbub_error hubbub_tokeniser_handle_data(hubbub_tokeniser *tokeniser); @@ -280,37 +277,34 @@ static hubbub_error hubbub_tokeniser_emit_token(hubbub_tokeniser *tokeniser, * Create a hubbub tokeniser * * \param input Input stream instance - * \param alloc Memory (de)allocation function - * \param pw Pointer to client-specific private data (may be NULL) * \param tokeniser Pointer to location to receive tokeniser instance * \return HUBBUB_OK on success, * HUBBUB_BADPARM on bad parameters, * HUBBUB_NOMEM on memory exhaustion */ hubbub_error hubbub_tokeniser_create(parserutils_inputstream *input, - hubbub_allocator_fn alloc, void *pw, hubbub_tokeniser **tokeniser) { parserutils_error perror; hubbub_tokeniser *tok; - if (input == NULL || alloc == NULL || tokeniser == NULL) + if (input == NULL || tokeniser == NULL) return HUBBUB_BADPARM; - tok = alloc(NULL, sizeof(hubbub_tokeniser), pw); + tok = malloc(sizeof(hubbub_tokeniser)); if (tok == NULL) return HUBBUB_NOMEM; - perror = parserutils_buffer_create(alloc, pw, &tok->buffer); + perror = parserutils_buffer_create(&tok->buffer); if (perror != PARSERUTILS_OK) { - alloc(tok, 0, pw); + free(tok); return hubbub_error_from_parserutils_error(perror); } - perror = parserutils_buffer_create(alloc, pw, &tok->insert_buf); + perror = parserutils_buffer_create(&tok->insert_buf); if (perror != PARSERUTILS_OK) { parserutils_buffer_destroy(tok->buffer); - alloc(tok, 0, pw); + free(tok); return hubbub_error_from_parserutils_error(perror); } @@ -330,9 +324,6 @@ hubbub_error hubbub_tokeniser_create(parserutils_inputstream *input, tok->error_handler = NULL; tok->error_pw = NULL; - tok->alloc = alloc; - tok->alloc_pw = pw; - memset(&tok->context, 0, sizeof(hubbub_tokeniser_context)); *tokeniser = tok; @@ -352,15 +343,14 @@ hubbub_error hubbub_tokeniser_destroy(hubbub_tokeniser *tokeniser) return HUBBUB_BADPARM; if (tokeniser->context.current_tag.attributes != NULL) { - tokeniser->alloc(tokeniser->context.current_tag.attributes, - 0, tokeniser->alloc_pw); + free(tokeniser->context.current_tag.attributes); } parserutils_buffer_destroy(tokeniser->insert_buf); parserutils_buffer_destroy(tokeniser->buffer); - tokeniser->alloc(tokeniser, 0, tokeniser->alloc_pw); + free(tokeniser); return HUBBUB_OK; } @@ -1202,10 +1192,9 @@ hubbub_error hubbub_tokeniser_handle_before_attribute_name( /** \todo parse error */ } - attr = tokeniser->alloc(ctag->attributes, + attr = realloc(ctag->attributes, (ctag->n_attributes + 1) * - sizeof(hubbub_attribute), - tokeniser->alloc_pw); + sizeof(hubbub_attribute)); if (attr == NULL) return HUBBUB_NOMEM; @@ -1334,10 +1323,9 @@ hubbub_error hubbub_tokeniser_handle_after_attribute_name( /** \todo parse error */ } - attr = tokeniser->alloc(ctag->attributes, + attr = realloc(ctag->attributes, (ctag->n_attributes + 1) * - sizeof(hubbub_attribute), - tokeniser->alloc_pw); + sizeof(hubbub_attribute)); if (attr == NULL) return HUBBUB_NOMEM; diff --git a/src/tokeniser/tokeniser.h b/src/tokeniser/tokeniser.h index ed46d60..5700923 100644 --- a/src/tokeniser/tokeniser.h +++ b/src/tokeniser/tokeniser.h @@ -55,7 +55,6 @@ typedef union hubbub_tokeniser_optparams { /* Create a hubbub tokeniser */ hubbub_error hubbub_tokeniser_create(parserutils_inputstream *input, - hubbub_allocator_fn alloc, void *pw, hubbub_tokeniser **tokeniser); /* Destroy a hubbub tokeniser */ hubbub_error hubbub_tokeniser_destroy(hubbub_tokeniser *tokeniser); diff --git a/src/treebuilder/in_body.c b/src/treebuilder/in_body.c index e736d51..5157e66 100644 --- a/src/treebuilder/in_body.c +++ b/src/treebuilder/in_body.c @@ -1162,10 +1162,8 @@ hubbub_error process_isindex_in_body(hubbub_treebuilder *treebuilder, /* First up, clone the token's attributes */ if (token->data.tag.n_attributes > 0) { uint32_t i; - attrs = treebuilder->alloc(NULL, - (token->data.tag.n_attributes + 1) * - sizeof(hubbub_attribute), - treebuilder->alloc_pw); + attrs = malloc((token->data.tag.n_attributes + 1) * + sizeof(hubbub_attribute)); if (attrs == NULL) return HUBBUB_NOMEM; @@ -1209,7 +1207,7 @@ hubbub_error process_isindex_in_body(hubbub_treebuilder *treebuilder, err = process_form_in_body(treebuilder, &dummy); if (err != HUBBUB_OK) { - treebuilder->alloc(attrs, 0, treebuilder->alloc_pw); + free(attrs); return err; } @@ -1221,7 +1219,7 @@ hubbub_error process_isindex_in_body(hubbub_treebuilder *treebuilder, err = process_hr_in_body(treebuilder, &dummy); if (err != HUBBUB_OK) { - treebuilder->alloc(attrs, 0, treebuilder->alloc_pw); + free(attrs); return err; } @@ -1233,7 +1231,7 @@ hubbub_error process_isindex_in_body(hubbub_treebuilder *treebuilder, err = process_container_in_body(treebuilder, &dummy); if (err != HUBBUB_OK) { - treebuilder->alloc(attrs, 0, treebuilder->alloc_pw); + free(attrs); return err; } @@ -1245,7 +1243,7 @@ hubbub_error process_isindex_in_body(hubbub_treebuilder *treebuilder, err = process_phrasing_in_body(treebuilder, &dummy); if (err != HUBBUB_OK) { - treebuilder->alloc(attrs, 0, treebuilder->alloc_pw); + free(attrs); return err; } @@ -1263,7 +1261,7 @@ hubbub_error process_isindex_in_body(hubbub_treebuilder *treebuilder, err = process_character(treebuilder, &dummy); if (err != HUBBUB_OK) { - treebuilder->alloc(attrs, 0, treebuilder->alloc_pw); + free(attrs); return err; } @@ -1278,18 +1276,18 @@ hubbub_error process_isindex_in_body(hubbub_treebuilder *treebuilder, err = reconstruct_active_formatting_list(treebuilder); if (err != HUBBUB_OK) { - treebuilder->alloc(attrs, 0, treebuilder->alloc_pw); + free(attrs); return err; } err = insert_element(treebuilder, &dummy.data.tag, false); if (err != HUBBUB_OK) { - treebuilder->alloc(attrs, 0, treebuilder->alloc_pw); + free(attrs); return err; } /* No longer need attrs */ - treebuilder->alloc(attrs, 0, treebuilder->alloc_pw); + free(attrs); treebuilder->context.frameset_ok = false; diff --git a/src/treebuilder/internal.h b/src/treebuilder/internal.h index 503168f..58c21d6 100644 --- a/src/treebuilder/internal.h +++ b/src/treebuilder/internal.h @@ -123,9 +123,6 @@ struct hubbub_treebuilder hubbub_error_handler error_handler; /**< Error handler */ void *error_pw; /**< Error handler data */ - - hubbub_allocator_fn alloc; /**< Memory (de)allocation function */ - void *alloc_pw; /**< Client private data */ }; hubbub_error hubbub_treebuilder_token_handler( diff --git a/src/treebuilder/treebuilder.c b/src/treebuilder/treebuilder.c index 10433b4..a6a4b43 100644 --- a/src/treebuilder/treebuilder.c +++ b/src/treebuilder/treebuilder.c @@ -85,25 +85,22 @@ static bool is_form_associated(element_type type); * Create a hubbub treebuilder * * \param tokeniser Underlying tokeniser instance - * \param alloc Memory (de)allocation function - * \param pw Pointer to client-specific private data * \param treebuilder Pointer to location to receive treebuilder instance * \return HUBBUB_OK on success, * HUBBUB_BADPARM on bad parameters * HUBBUB_NOMEM on memory exhaustion */ hubbub_error hubbub_treebuilder_create(hubbub_tokeniser *tokeniser, - hubbub_allocator_fn alloc, void *pw, hubbub_treebuilder **treebuilder) { hubbub_error error; hubbub_treebuilder *tb; hubbub_tokeniser_optparams tokparams; - if (tokeniser == NULL || alloc == NULL || treebuilder == NULL) + if (tokeniser == NULL || treebuilder == NULL) return HUBBUB_BADPARM; - tb = alloc(NULL, sizeof(hubbub_treebuilder), pw); + tb = malloc(sizeof(hubbub_treebuilder)); if (tb == NULL) return HUBBUB_NOMEM; @@ -114,11 +111,10 @@ hubbub_error hubbub_treebuilder_create(hubbub_tokeniser *tokeniser, memset(&tb->context, 0, sizeof(hubbub_treebuilder_context)); tb->context.mode = INITIAL; - tb->context.element_stack = alloc(NULL, - ELEMENT_STACK_CHUNK * sizeof(element_context), - pw); + tb->context.element_stack = malloc( + ELEMENT_STACK_CHUNK * sizeof(element_context)); if (tb->context.element_stack == NULL) { - alloc(tb, 0, pw); + free(tb); return HUBBUB_NOMEM; } tb->context.stack_alloc = ELEMENT_STACK_CHUNK; @@ -133,17 +129,14 @@ hubbub_error hubbub_treebuilder_create(hubbub_tokeniser *tokeniser, tb->error_handler = NULL; tb->error_pw = NULL; - tb->alloc = alloc; - tb->alloc_pw = pw; - tokparams.token_handler.handler = hubbub_treebuilder_token_handler; tokparams.token_handler.pw = tb; error = hubbub_tokeniser_setopt(tokeniser, HUBBUB_TOKENISER_TOKEN_HANDLER, &tokparams); if (error != HUBBUB_OK) { - alloc(tb->context.element_stack, 0, pw); - alloc(tb, 0, pw); + free(tb->context.element_stack); + free(tb); return error; } @@ -206,8 +199,7 @@ hubbub_error hubbub_treebuilder_destroy(hubbub_treebuilder *treebuilder) treebuilder->context.element_stack[0].node); } } - treebuilder->alloc(treebuilder->context.element_stack, 0, - treebuilder->alloc_pw); + free(treebuilder->context.element_stack); treebuilder->context.element_stack = NULL; for (entry = treebuilder->context.formatting_list; entry != NULL; @@ -220,10 +212,10 @@ hubbub_error hubbub_treebuilder_destroy(hubbub_treebuilder *treebuilder) entry->details.node); } - treebuilder->alloc(entry, 0, treebuilder->alloc_pw); + free(entry); } - treebuilder->alloc(treebuilder, 0, treebuilder->alloc_pw); + free(treebuilder); return HUBBUB_OK; } @@ -1086,12 +1078,11 @@ hubbub_error element_stack_push(hubbub_treebuilder *treebuilder, uint32_t slot = treebuilder->context.current_node + 1; if (slot >= treebuilder->context.stack_alloc) { - element_context *temp = treebuilder->alloc( + element_context *temp = realloc( treebuilder->context.element_stack, (treebuilder->context.stack_alloc + ELEMENT_STACK_CHUNK) * - sizeof(element_context), - treebuilder->alloc_pw); + sizeof(element_context)); if (temp == NULL) return HUBBUB_NOMEM; @@ -1303,8 +1294,7 @@ hubbub_error formatting_list_append(hubbub_treebuilder *treebuilder, { formatting_list_entry *entry; - entry = treebuilder->alloc(NULL, sizeof(formatting_list_entry), - treebuilder->alloc_pw); + entry = malloc(sizeof(formatting_list_entry)); if (entry == NULL) return HUBBUB_NOMEM; @@ -1353,8 +1343,7 @@ hubbub_error formatting_list_insert(hubbub_treebuilder *treebuilder, assert(next->prev == prev); } - entry = treebuilder->alloc(NULL, sizeof(formatting_list_entry), - treebuilder->alloc_pw); + entry = malloc(sizeof(formatting_list_entry)); if (entry == NULL) return HUBBUB_NOMEM; @@ -1411,7 +1400,7 @@ hubbub_error formatting_list_remove(hubbub_treebuilder *treebuilder, else entry->next->prev = entry->prev; - treebuilder->alloc(entry, 0, treebuilder->alloc_pw); + free(entry); return HUBBUB_OK; } diff --git a/src/treebuilder/treebuilder.h b/src/treebuilder/treebuilder.h index 2ff1c38..5308eba 100644 --- a/src/treebuilder/treebuilder.h +++ b/src/treebuilder/treebuilder.h @@ -48,7 +48,6 @@ typedef union hubbub_treebuilder_optparams { /* Create a hubbub treebuilder */ hubbub_error hubbub_treebuilder_create(hubbub_tokeniser *tokeniser, - hubbub_allocator_fn alloc, void *pw, hubbub_treebuilder **treebuilder); /* Destroy a hubbub treebuilder */ -- cgit v1.2.3