diff --git a/src/input/ReaderBackend.cc b/src/input/ReaderBackend.cc index 0a6ff37dc2..ce79ecfd39 100644 --- a/src/input/ReaderBackend.cc +++ b/src/input/ReaderBackend.cc @@ -169,6 +169,9 @@ bool ReaderBackend::Init(string arg_source, int mode, const int arg_num_fields, source = arg_source; SetName("InputReader/"+source); + num_fields = arg_num_fields; + fields = arg_fields; + // disable if DoInit returns error. int success = DoInit(arg_source, mode, arg_num_fields, arg_fields); @@ -188,6 +191,16 @@ void ReaderBackend::Finish() disabled = true; DisableFrontend(); SendOut(new ReaderFinishedMessage(frontend)); + + if ( fields != 0 ) { + + for ( unsigned int i = 0; i < num_fields; i++ ) { + delete(fields[i]); + } + + delete[] (fields); + fields = 0; + } } bool ReaderBackend::Update() diff --git a/src/input/ReaderBackend.h b/src/input/ReaderBackend.h index 28fd99f2b9..5742f72368 100644 --- a/src/input/ReaderBackend.h +++ b/src/input/ReaderBackend.h @@ -228,6 +228,9 @@ private: char* buf; unsigned int buf_len; bool autostart; + + unsigned int num_fields; + const threading::Field* const * fields; // raw mapping }; } diff --git a/src/input/readers/Ascii.cc b/src/input/readers/Ascii.cc index 20ae79ab19..553a4ada81 100644 --- a/src/input/readers/Ascii.cc +++ b/src/input/readers/Ascii.cc @@ -73,7 +73,6 @@ Ascii::Ascii(ReaderFrontend *frontend) : ReaderBackend(frontend) Ascii::~Ascii() { DoFinish(); - } void Ascii::DoFinish()