From 4cf306ce68876919645c496985065bc557e7da5b Mon Sep 17 00:00:00 2001 From: Kragen Javier Sitaker <kragen@canonical.org> Date: Sat, 26 Oct 2019 23:30:28 -0300 Subject: [PATCH] Fix noise memory leaks in other base64 examples It bothers me a little bit that I can't figure out how to free the parser --- surely that is a thing that the bindings for other languages need to do --- but storing a pointer to the parser in a statically-allocated variable, as in base64.c, at least stops valgrind from reporting the parser as a memory leak. --- examples/base64_sem1.c | 6 ++++-- examples/base64_sem2.c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/examples/base64_sem1.c b/examples/base64_sem1.c index afbbef8..7127d1e 100644 --- a/examples/base64_sem1.c +++ b/examples/base64_sem1.c @@ -149,12 +149,13 @@ HParser *init_parser(void) #include <stdio.h> +const HParser *parser; // Allocated statically to suppress leak warnings + int main(int argc, char **argv) { uint8_t input[102400]; size_t inputsize; - const HParser *parser; - const HParseResult *result; + HParseResult *result; parser = init_parser(); @@ -166,6 +167,7 @@ int main(int argc, char **argv) if(result) { fprintf(stderr, "parsed=%" PRId64 " bytes\n", result->bit_length/8); h_pprint(stdout, result->ast, 0, 0); + h_parse_result_free(result); return 0; } else { return 1; diff --git a/examples/base64_sem2.c b/examples/base64_sem2.c index b8f7b4a..dac7e7a 100644 --- a/examples/base64_sem2.c +++ b/examples/base64_sem2.c @@ -153,12 +153,13 @@ const HParser *init_parser(void) #include <stdio.h> +const HParser *parser; // Allocated statically to suppress leak warnings + int main(int argc, char **argv) { uint8_t input[102400]; size_t inputsize; - const HParser *parser; - const HParseResult *result; + HParseResult *result; parser = init_parser(); @@ -170,6 +171,7 @@ int main(int argc, char **argv) if(result) { fprintf(stderr, "parsed=%" PRId64 " bytes\n", result->bit_length/8); h_pprint(stdout, result->ast, 0, 0); + h_parse_result_free(result); return 0; } else { return 1; -- GitLab