Skip to content
Snippets Groups Projects
Commit 4cf306ce authored by xentrac's avatar xentrac
Browse files

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.
parent 235f6f74
No related branches found
No related tags found
No related merge requests found
...@@ -149,12 +149,13 @@ HParser *init_parser(void) ...@@ -149,12 +149,13 @@ HParser *init_parser(void)
#include <stdio.h> #include <stdio.h>
const HParser *parser; // Allocated statically to suppress leak warnings
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
uint8_t input[102400]; uint8_t input[102400];
size_t inputsize; size_t inputsize;
const HParser *parser; HParseResult *result;
const HParseResult *result;
parser = init_parser(); parser = init_parser();
...@@ -166,6 +167,7 @@ int main(int argc, char **argv) ...@@ -166,6 +167,7 @@ int main(int argc, char **argv)
if(result) { if(result) {
fprintf(stderr, "parsed=%" PRId64 " bytes\n", result->bit_length/8); fprintf(stderr, "parsed=%" PRId64 " bytes\n", result->bit_length/8);
h_pprint(stdout, result->ast, 0, 0); h_pprint(stdout, result->ast, 0, 0);
h_parse_result_free(result);
return 0; return 0;
} else { } else {
return 1; return 1;
......
...@@ -153,12 +153,13 @@ const HParser *init_parser(void) ...@@ -153,12 +153,13 @@ const HParser *init_parser(void)
#include <stdio.h> #include <stdio.h>
const HParser *parser; // Allocated statically to suppress leak warnings
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
uint8_t input[102400]; uint8_t input[102400];
size_t inputsize; size_t inputsize;
const HParser *parser; HParseResult *result;
const HParseResult *result;
parser = init_parser(); parser = init_parser();
...@@ -170,6 +171,7 @@ int main(int argc, char **argv) ...@@ -170,6 +171,7 @@ int main(int argc, char **argv)
if(result) { if(result) {
fprintf(stderr, "parsed=%" PRId64 " bytes\n", result->bit_length/8); fprintf(stderr, "parsed=%" PRId64 " bytes\n", result->bit_length/8);
h_pprint(stdout, result->ast, 0, 0); h_pprint(stdout, result->ast, 0, 0);
h_parse_result_free(result);
return 0; return 0;
} else { } else {
return 1; return 1;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment