antlr3 icon indicating copy to clipboard operation
antlr3 copied to clipboard

antlr3read8Bit memory leak when reusing input stream after antlr3FileStreamNew

Open dfranusic opened this issue 12 years ago • 0 comments

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.

dfranusic avatar Nov 07 '12 15:11 dfranusic