antlr3
antlr3 copied to clipboard
antlr3read8Bit memory leak when reusing input stream after antlr3FileStreamNew
Valgrind output:
==8182== HEAP SUMMARY:
==8182== in use at exit: 711 bytes in 1 blocks
==8182== total heap usage: 608 allocs, 607 frees, 2,167,890 bytes allocated
==8182==
==8182== 711 bytes in 1 blocks are definitely lost in loss record 1 of 1
==8182== at 0x4C26ABB: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==8182== by 0x4E3B446: antlr3read8Bit (in /usr/local/lib64/libantlr3c.so)
==8182== by 0x4E3B726: antlr3FileStreamNew (in /usr/local/lib64/libantlr3c.so)
==8182== by 0x408C34: main (configd.cpp:58)
This is the relevant code that causes memory leak:
...
input = antlr3FileStreamNew(fName_def, 0);
...
input->reuse(input, (unsigned char*)tmp_buff, tmp_size, (unsigned char*)"file_stream");
...
input->close(input);
input = NULL;
This only happens if I'm using antlr3FileStreamNew
in first iteration. If antlr3StringStreamNew
is used instead, there is no memory leak.