From b9bf5c629e03e40d4b85d3f0a081cb41b143055f Mon Sep 17 00:00:00 2001 From: Al Date: Tue, 15 Dec 2015 00:52:24 -0500 Subject: [PATCH] [fix] Moving address_parser_response_destroy into libpostal so caller can free --- src/address_parser.c | 25 ------------------------- src/address_parser.h | 1 - src/libpostal.c | 26 ++++++++++++++++++++++++++ src/libpostal.h | 4 ++++ 4 files changed, 30 insertions(+), 26 deletions(-) diff --git a/src/address_parser.c b/src/address_parser.c index 0c9ae089..28473e92 100644 --- a/src/address_parser.c +++ b/src/address_parser.c @@ -801,31 +801,6 @@ address_parser_response_t *address_parser_response_new(void) { return response; } -void address_parser_response_destroy(address_parser_response_t *self) { - if (self == NULL) return; - - for (int i = 0; i < self->num_components; i++) { - if (self->components != NULL) { - free(self->components[i]); - } - - if (self->labels != NULL) { - free(self->labels[i]); - } - } - - if (self->components != NULL) { - free(self->components); - } - - if (self->labels != NULL) { - free(self->labels); - } - - free(self); -} - - address_parser_response_t *address_parser_parse(char *address, char *language, char *country, address_parser_context_t *context) { if (address == NULL || context == NULL) return NULL; diff --git a/src/address_parser.h b/src/address_parser.h index 175c988d..119d188b 100644 --- a/src/address_parser.h +++ b/src/address_parser.h @@ -139,7 +139,6 @@ address_parser_t *address_parser_new(void); address_parser_t *get_address_parser(void); bool address_parser_load(char *dir); -void address_parser_response_destroy(address_parser_response_t *self); address_parser_response_t *address_parser_parse(char *address, char *language, char *country, address_parser_context_t *context); void address_parser_destroy(address_parser_t *self); diff --git a/src/libpostal.c b/src/libpostal.c index c4f99a0b..cfc33360 100644 --- a/src/libpostal.c +++ b/src/libpostal.c @@ -822,6 +822,32 @@ char **expand_address(char *input, normalize_options_t options, size_t *n) { } +void address_parser_response_destroy(address_parser_response_t *self) { + if (self == NULL) return; + + for (int i = 0; i < self->num_components; i++) { + if (self->components != NULL) { + free(self->components[i]); + } + + if (self->labels != NULL) { + free(self->labels[i]); + } + } + + if (self->components != NULL) { + free(self->components); + } + + if (self->labels != NULL) { + free(self->labels); + } + + free(self); +} + + + address_parser_response_t *parse_address(char *address, address_parser_options_t options) { address_parser_context_t *context = address_parser_context_new(); address_parser_response_t *parsed = address_parser_parse(address, options.language, options.country, context); diff --git a/src/libpostal.h b/src/libpostal.h index 95be1e53..a7da4008 100644 --- a/src/libpostal.h +++ b/src/libpostal.h @@ -107,8 +107,12 @@ static address_parser_options_t LIBPOSTAL_ADDRESS_PARSER_DEFAULT_OPTIONS = { .country = NULL }; +void address_parser_response_destroy(address_parser_response_t *self); + address_parser_response_t *parse_address(char *address, address_parser_options_t options); + + // Setup/teardown methods