Bug 112590 - infinite recursion & crash when importing c++ classes
Summary: infinite recursion & crash when importing c++ classes
Status: RESOLVED FIXED
Alias: None
Product: umbrello
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: NOR crash
Target Milestone: ---
Assignee: Umbrello Development Group
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-09-14 13:45 UTC by Ingo Molnar
Modified: 2005-09-16 09:59 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments
powermanga.hpp file (76.35 KB, application/octet-stream)
2005-09-14 13:56 UTC, Ingo Molnar
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ingo Molnar 2005-09-14 13:45:14 UTC
Version:           kdesdk-460424 (using KDE Devel)
Installed from:    Compiled sources
Compiler:          gcc version 4.0.1 20050727 (Red Hat 4.0.1-5) 
OS:                Linux

I tried to import various random c++ classes into Umbrello.

it broke rather easily, upon trying to import:

powermanga-0.71c/powermanga.hpp

backtrace below.

#0  0x00c17963 in malloc_consolidate () from /lib/libc.so.6
#1  0x00c180a9 in _int_free () from /lib/libc.so.6
#2  0x00c19e85 in _int_realloc () from /lib/libc.so.6
#3  0x00c1aa30 in realloc () from /lib/libc.so.6
#4  0x047bb918 in QGArray::resize () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#5  0x047bb9a0 in QGArray::resize () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#6  0x0480f84a in QUtf8Codec::fromUnicode () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#7  0x0480a085 in QTextCodec::fromUnicode () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#8  0x047dca3d in QString::local8Bit () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#9  0x04b46a93 in kdbgstream::flush () from /usr/lib/libkdecore.so.4
#10 0x080f7d21 in endl ()
#11 0x08144552 in CppImport::feedTheModel ()
#12 0x08144725 in CppImport::feedTheModel ()
#13 0x08144725 in CppImport::feedTheModel ()
#14 0x08144725 in CppImport::feedTheModel ()
#15 0x08144725 in CppImport::feedTheModel ()
#16 0x08144725 in CppImport::feedTheModel ()
#17 0x08144725 in CppImport::feedTheModel ()
#18 0x08144725 in CppImport::feedTheModel ()
#19 0x08144725 in CppImport::feedTheModel ()
#20 0x08144725 in CppImport::feedTheModel ()
#21 0x08144725 in CppImport::feedTheModel ()
#22 0x08144725 in CppImport::feedTheModel ()
#23 0x08144725 in CppImport::feedTheModel ()
#24 0x08144725 in CppImport::feedTheModel ()
#25 0x08144725 in CppImport::feedTheModel ()
#26 0x08144725 in CppImport::feedTheModel ()
#27 0x08144725 in CppImport::feedTheModel ()
#28 0x08144725 in CppImport::feedTheModel ()
#29 0x08144725 in CppImport::feedTheModel ()
#30 0x08144725 in CppImport::feedTheModel ()
#31 0x08144725 in CppImport::feedTheModel ()
#32 0x08144725 in CppImport::feedTheModel ()
#33 0x08144725 in CppImport::feedTheModel ()
#34 0x08144725 in CppImport::feedTheModel ()
#35 0x08144725 in CppImport::feedTheModel ()
#36 0x08144725 in CppImport::feedTheModel ()
#37 0x08144725 in CppImport::feedTheModel ()
#38 0x08144725 in CppImport::feedTheModel ()
#39 0x08144725 in CppImport::feedTheModel ()
#40 0x08144725 in CppImport::feedTheModel ()
#41 0x08144725 in CppImport::feedTheModel ()
#42 0x08144725 in CppImport::feedTheModel ()
[etc]
Comment 1 Ingo Molnar 2005-09-14 13:56:36 UTC
Created attachment 12568 [details]
powermanga.hpp file

powermanga.hpp attached. Sometimes you need to import it twice to get the
crash. Might be releated to heap/stack use?

the file is under GPLv2.
Comment 2 Oliver Kellogg 2005-09-16 09:59:52 UTC
SVN commit 461005 by okellogg:

addEnumLiteral(): Check that the name is not already present in m_List.
BUG:112590


 M  +6 -0      enum.cpp  


--- branches/KDE/3.5/kdesdk/umbrello/umbrello/enum.cpp #461004:461005
@@ -84,6 +84,12 @@
 }
 
 UMLObject* UMLEnum::addEnumLiteral(const QString &name, Uml::IDType id) {
+    UMLObject *el = UMLCanvasObject::findChildObject(name);
+    if (el != NULL) {
+        kdDebug() << "UMLEnum::addEnumLiteral: " << name
+                  << " is already present" << endl; 
+        return el;
+    }
     UMLEnumLiteral* literal = new UMLEnumLiteral(this, name, id);
     m_List.append(literal);
     emit modified();