Bug 122914

Summary: crash when refusing to rename a class on importing typedef
Product: [Applications] umbrello Reporter: Yan Morin <yansanmo.site>
Component: generalAssignee: Umbrello Development Group <umbrello-devel>
Status: RESOLVED FIXED    
Severity: crash    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:

Description Yan Morin 2006-03-01 20:02:14 UTC
Version:            (using KDE KDE 3.5.1)
Installed from:    Compiled From Sources
OS:                Linux

There is a bug in umbrello on Cpp Import with Template + typedef that produce another bug when importing twice a file.

cpptree2uml.cpp:155
The typedef importation tries to create the typedef inner class.

It uses Import_Utils::createUMLObject() and doesn't see the bad templated datatype and think that the function has to create it. 

It tries to create it, and then it sees that the templated datatype already exists, so it wants to rename it. 

The user say 'no', return 0, and then bang! umbrello crashes because it uses a 0 pointer.
It crashes after import_utils.cpp:189

Easy test.h file:

namespace test {
 typedef std::map<std::string, ItemMap*> SectionMap;
 typedef std::map<std::string, SectionMap*> SectionMapMap;
}

Import this file two times, and say no to the 'rename' dialog.
Comment 1 Oliver Kellogg 2006-03-02 00:22:55 UTC
SVN commit 514932 by okellogg:

Prevent crashing as described in the PR - but there is still some uncertainty
concerning where to put imported data types (global vs local scope)
BUG:122914


 M  +1 -0      ChangeLog  
 M  +4 -6      umbrello/import_utils.cpp  
 M  +6 -4      umbrello/model_utils.cpp  
 M  +52 -39    umbrello/object_factory.cpp  
 M  +7 -1      umbrello/object_factory.h