Bug#2146: Seg fault when outputting a blank line first thing to cout

jbb jbb at ihug.co.nz
Fri Oct 15 10:00:28 UTC 1999


Package: kdevelop
Version: 1.0 beta3
Severity: grave (ish) bad, if it happens and easy to fix.

Bugreport ID : 23:15,15.10.99

Originator       : jbb
E-Mail   : jbb at ihug.co.nz

Subject : Seg fault when outputting a blank line first thing to cout

Error Class      : software bug
Error Location: ckdevelop.cpp
Priority         : low

Bug Description ---------------------------

If a "KDE Normal" application outputs a blank line to cout before any other
data is output to cout then an assert is generated in qmultiedit, when the
application is run using the "Run" button (phew :-)

here's some simple code that'll trigger the assert.

#include "iostream"
int main(int argc, char* argv[]) {

  cout << endl;

  KApplication app(argc,argv,"term");
...

This is the ASSERT diagnostic

EXEC:./termQGList::locate: Index 1 out of range
ASSERT: "s" in widgets/qmultilinedit.cpp (1853)
Segmentation fault (core dumped)

This hack :-) will stop the assert

void CKDevelop::slotApplReceivedStdout(KProcess*,char* buffer,int buflen){
  if (*(buffer+buflen-1) == '\n')
    buflen--;
    
  QString str(buffer,buflen+1);
  stdin_stdout_widget->insertLine(str);
  stdin_stdout_widget->setCursorPosition(stdin_stdout_widget->numLines()-1,0);

//    int x,y;
//  showOutputView(true);
//  stdin_stdout_widget->cursorPosition(&x,&y);
//  QString str(buffer,buflen+1);
//  stdin_stdout_widget->insertAt(str,x,y);
}
void CKDevelop::slotApplReceivedStderr(KProcess*,char* buffer,int buflen){
  if (*(buffer+buflen-1) == '\n')
    buflen--;
    
  QString str(buffer,buflen+1);
  stderr_widget->insertLine(str);
  stderr_widget->setCursorPosition(stderr_widget->numLines()-1,0);

//  int x,y;
//  showOutputView(true);
//  stderr_widget->cursorPosition(&x,&y);
//  QString str(buffer,buflen+1);
//  stderr_widget->insertAt(str,x,y);
}

System Information ------------------------

KDevelop version	: 1.0beta3
KDE version		: KDE-1.1.2 (cvs-release)
QT version		: QT-1.44
OS/Distribution		: Mandrake 6.1
Compiler		: gcc-2.95.1

Also using "insertLine()" and "setCursorPosition" as above on the message
window will fix the problem where the output gets messed up if the user
clicks in the message window whilst output is still being generated, as per the
report below.


On Fri, 15 Oct 1999, you wrote:
> Am Fri, 15 Oct 1999 schriebst Du zwecks "BUG: Output window" :
> > Hi,
> > 
> > I found an ugly bug:
> > Whenever I click on a compiler error message line in the output window
> > of KDevelop during compiling, all error lines coming after that click
> > are scrambled.
> > -- 
> > 
> > Ciao,
> > --Falk
> --
> email 1: delta_x at linuxCoding.de
> email 2: delta_x at gmx.net
> home   : HTTP://WWW.LinuxCoding.DE
> 
> why do you click on this line :)
> you MUST wait till kdev has compiled ready

Nooo, it's ugly and can be fixed :-)

-- 
Regards,

jbb
http://homepages.ihug.co.nz/~jbb



More information about the KDevelop-devel mailing list