Bug 129107

Summary: Program crash when importing classes from a java file
Product: [Applications] umbrello Reporter: Manuel Reinaldo <manuel.reinaldo>
Component: generalAssignee: Umbrello Development Group <umbrello-devel>
Status: RESOLVED FIXED    
Severity: crash    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Slackware   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Manuel Reinaldo 2006-06-13 22:29:56 UTC
Version:           1.5.3 (using KDE KDE 3.5.3)
Installed from:    Slackware Packages
Compiler:          gcc (GCC) 3.3.6 
OS:                Linux

When importing classes from the file included the program gives a signal 11.

It happens in Slackware 10.2 running under Colinux and in Fedora 5 running in Vmware both with Umbrello 1.5.3 and in Mandriva 10 (native) with Umbrello 1.5.2

I simplified the file to the minimum that causes the crash.

--------------------------------
import java.awt.*;
import java.io.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.Toolkit;

public class DiffWatchPoints
{
  DefaultTableModel model = new DefaultTableModel(){
        public boolean isCellEditable(int rowIndex, int mColIndex) {
            return false;
        }
    };
  public void create() 
  {  
  }
}
Comment 1 Oliver Kellogg 2006-06-16 00:53:13 UTC
SVN commit 551903 by okellogg:

parseStmt(): Handle "new" and sequemce of statements at state member declaration.
BUG:129107


 M  +22 -1     javaimport.cpp  


--- branches/KDE/3.5/kdesdk/umbrello/umbrello/javaimport.cpp #551902:551903
@@ -331,7 +331,28 @@
     // At this point we know it's some kind of attribute declaration.
     while (1) {
         while (nextToken != "," && nextToken != ";") {
-            name += nextToken;  // add possible array dimensions to `name'
+            if (nextToken == "=") {
+                if ((nextToken = advance()) == "new") {
+                    advance();
+                    if ((nextToken = advance()) == "(") {
+                        skipToClosing('(');
+                        if ((nextToken = advance()) == "{") {
+                            skipToClosing('{');
+                        } else {
+                            skipStmt();
+                            break;
+                        }
+                    } else {
+                        skipStmt();
+                        break;
+                    }
+                } else {
+                    skipStmt();
+                    break;
+                }
+            } else {
+                name += nextToken;  // add possible array dimensions to `name'
+            }
             nextToken = advance();
         }
         UMLObject *o = Import_Utils::insertAttribute(m_klass, m_currentAccess, name, typeName, m_comment);