X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fdevices%2Finputfile.cpp;h=1bf34bad22a33bc0307199657bfe5ecf8dc9ef3d;hb=3b0acbcbcd902ac61a3841e7c558cbc5f8448b7f;hp=58c60d700bbd25375222b20f09c7f35a41097e3a;hpb=6f925ba9d6faf1077b73c5a5808259576081716a;p=pulseview.git diff --git a/pv/devices/inputfile.cpp b/pv/devices/inputfile.cpp index 58c60d7..1bf34ba 100644 --- a/pv/devices/inputfile.cpp +++ b/pv/devices/inputfile.cpp @@ -19,6 +19,7 @@ #include #include +#include #include @@ -30,6 +31,7 @@ using std::streamsize; using std::string; using std::ifstream; using std::ios; +using std::vector; namespace pv { namespace devices { @@ -64,17 +66,18 @@ void InputFile::open() // we can't open the device without sending some data first f = new ifstream(file_name_, ios::binary); - char buffer[BufferSize]; - f->read(buffer, BufferSize); + vector buffer(BufferSize); + + f->read(buffer.data(), BufferSize); const streamsize size = f->gcount(); if (size == 0) return; - input_->send(buffer, size); + input_->send(buffer.data(), size); try { device_ = input_->device(); - } catch (sigrok::Error) { + } catch (sigrok::Error&) { return; } @@ -93,22 +96,22 @@ void InputFile::start() void InputFile::run() { - char buffer[BufferSize]; - if (!f) { // Previous call to run() processed the entire file already f = new ifstream(file_name_, ios::binary); input_->reset(); } + vector buffer(BufferSize); + interrupt_ = false; while (!interrupt_ && !f->eof()) { - f->read(buffer, BufferSize); + f->read(buffer.data(), BufferSize); const streamsize size = f->gcount(); if (size == 0) break; - input_->send(buffer, size); + input_->send(buffer.data(), size); if (size != BufferSize) break;