diff --git a/src/StdOutRedirector.cpp b/src/StdOutRedirector.cpp index 4a36dd5..7b79204 100644 --- a/src/StdOutRedirector.cpp +++ b/src/StdOutRedirector.cpp @@ -22,40 +22,45 @@ StdOutRedirector::StdOutRedirector() close(1); // Duplicate write end of original dup2(fdguistd[1], 1); + + buffer = new char[bufferSize]; } StdOutRedirector::~StdOutRedirector() { + delete[] buffer; } void StdOutRedirector::readOutsToTF() { + size_t len; + char* copy; + int n_out; - char* buffer = new char[4096]; QString str; //char buffer[512]; + //qDebug() << "begin read..."; //qDebug() << "from qdebug..."; - //printf("from printf...\n"); + //printf("from printf..."); //std::cout << "from std::cout..." << std::endl; fflush(stdout); //Perhaps there is a non-blocking version of _read() that you can call ? - n_out = read(fdguistd[0], buffer, 4096); - - if (n_out <= 0) + memset(buffer, 0, bufferSize); + n_out = read(fdguistd[0], buffer, bufferSize); + if (n_out <= 0) { return; + } if (n_out >= 1) { str.append(QString(buffer)); int con = str.lastIndexOf('\n'); int remv = str.at(con - 1) == '\n' ? 1 : 0; - if (con) { + if (con > 0) { str = str.remove(con - remv, str.length()); output->append(str); } } - - - + return; } diff --git a/src/StdOutRedirector.h b/src/StdOutRedirector.h index 788383c..2242883 100644 --- a/src/StdOutRedirector.h +++ b/src/StdOutRedirector.h @@ -42,4 +42,6 @@ private: QTextEdit* output; int fdStdOut; int fdguistd[2]; + char* buffer = nullptr; + const int bufferSize = 4096; };