| Summary: | umbrello 1.3 beta c++ parser segfaults on simple class | ||
|---|---|---|---|
| Product: | [Applications] umbrello | Reporter: | Sebastian Stein <seb.kde> |
| Component: | general | Assignee: | Umbrello Development Group <umbrello-devel> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | CC: | kdevelop-devel |
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | unspecified | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
This bug may also exist in KDevelop.
Program received signal SIGSEGV, Segmentation fault.
0x40eac132 in QString::deref () from /usr/lib/qt/lib/libqt-mt.so.3
(gdb) bt
#0 0x40eac132 in QString::deref () from /usr/lib/qt/lib/libqt-mt.so.3
#1 0x40eac23c in QString::operator= () from /usr/lib/qt/lib/libqt-mt.so.3
#2 0x081ce838 in Parser::parseMemberSpecification (this=0xbfffe390,
node=@0xbfffe080) at ast.h:260
#3 0x081cc025 in Parser::parseClassSpecifier (this=0xbfffe390,
node=@0xbfffe250) at parser.cpp:1871
#4 0x081bda75 in Parser::parseDeclaration (this=0xbfffe390, node=@0xbfffe310)
at parser.cpp:528
#5 0x081bd4a4 in Parser::parseTranslationUnit (this=0xbfffe390,
node=@0xbfffe430) at parser.cpp:448
#6 0x081a79f1 in Driver::parseFile (this=0x84bfa38, fileName=@0xbfffe660,
onlyPreProcess=false, force=false) at driver.cpp:250
#7 0x08106951 in ClassImport::importCPP (this=0x84c05d0, headerFileList=
{<QValueList<QString>> = {sh = 0x84c45b0}, <No data fields>})
at classimport.cpp:196
#8 0x0815a266 in UMLApp::slotImportClasses (this=0x83dc4f0) at qshared.h:49
#9 0x0815b27d in UMLApp::qt_invoke (this=0x83dc4f0, _id=110, _o=0xbfffe7d0)
at uml.moc:271
#10 0x40be3eac in QObject::activate_signal ()
from /usr/lib/qt/lib/libqt-mt.so.3
#11 0x40be3ce4 in QObject::activate_signal ()
from /usr/lib/qt/lib/libqt-mt.so.3
#12 0x4054692b in KAction::activated () from /opt/kde/lib/libkdeui.so.4
#13 0x4054630f in KAction::slotActivated () from /opt/kde/lib/libkdeui.so.4
#14 0x40546b31 in KAction::qt_invoke () from /opt/kde/lib/libkdeui.so.4
#15 0x40be3eac in QObject::activate_signal ()
from /usr/lib/qt/lib/libqt-mt.so.3
#16 0x40ef7c6a in QSignal::signal () from /usr/lib/qt/lib/libqt-mt.so.3
#17 0x40bfdc2d in QSignal::activate () from /usr/lib/qt/lib/libqt-mt.so.3
#18 0x40ce7315 in QPopupMenu::mouseReleaseEvent ()
from /usr/lib/qt/lib/libqt-mt.so.3
#19 0x40c19767 in QWidget::event () from /usr/lib/qt/lib/libqt-mt.so.3
#20 0x40b884bf in QApplication::internalNotify ()
from /usr/lib/qt/lib/libqt-mt.so.3
#21 0x40b87bc1 in QApplication::notify () from /usr/lib/qt/lib/libqt-mt.so.3
#22 0x4077b76d in KApplication::notify () from /opt/kde/lib/libkdecore.so.4
#23 0x40b1f681 in QETWidget::translateMouseEvent ()
from /usr/lib/qt/lib/libqt-mt.so.3
#24 0x40b1d73b in QApplication::x11ProcessEvent ()
from /usr/lib/qt/lib/libqt-mt.so.3
#25 0x40b342b1 in QEventLoop::processEvents ()
from /usr/lib/qt/lib/libqt-mt.so.3
#26 0x40b9a678 in QEventLoop::enterLoop () from /usr/lib/qt/lib/libqt-mt.so.3
#27 0x40b9a528 in QEventLoop::exec () from /usr/lib/qt/lib/libqt-mt.so.3
#28 0x40b88711 in QApplication::exec () from /usr/lib/qt/lib/libqt-mt.so.3
#29 0x0813a21f in main (argc=1, argv=0xbffff514) at main.cpp:86
I actually meant without the stars in the comments, like so:
class X
{
public:
void Y( // comment
const int a) const; // another comment
};
Yes, I also encountered this problem. After litle examination I solved it.
The problem is when some token with semicolon is after closing bracket of member function of class, structure or union.
Another example is
class A {
public:
void member() { a=1;}; //comment
};
this patch will do it:
--- parser.cpp 2004-08-10 23:02:56.000000000 +0000
+++ parser-new.cpp 2004-09-05 02:30:16.780647000 +0000
@@ -1866,7 +1866,7 @@
if( lex->lookAhead(0) == '}' )
break;
- DeclarationAST::Node memSpec;
+ DeclarationAST::Node memSpec = CreateNode<DeclarationAST>() ;
int startDecl = lex->index();
if( !parseMemberSpecification(memSpec) ){
if( startDecl == lex->index() )
enjoy!!!
martin
Committed, many thanks. Maybe this should be picked up by KDevelop as well? |
Version: 1.3.0 (using KDE 3.2.3, compiled sources) Compiler: gcc version 3.3.3 OS: Linux (i686) release 2.4.26 This class makes Umbrello crashing: class X { public: void Y( /**/ comment const int a) const; /**/ another comment }; reported by Brett Kelford <brett@orca1.com>