Bug 12378 fixed: sdf() crashed Scilab 65/10765/2
Calixte DENIZET [Mon, 11 Mar 2013 08:33:15 +0000 (09:33 +0100)]
Change-Id: I6699cae774954a9c8d20971f07745712da1254ec

scilab/CHANGES_5.4.X
scilab/modules/graphic_objects/src/cpp/ScilabView.cpp
scilab/modules/graphic_objects/tests/unit_tests/sdf.dia.ref [new file with mode: 0644]
scilab/modules/graphic_objects/tests/unit_tests/sdf.tst [new file with mode: 0644]

index 74f88d0..f98a8bf 100644 (file)
@@ -520,6 +520,9 @@ Bug fixes
 * Bug #12377 fixed - chepol was located in the wrong help section
                      (now in polynomial).
 
+* Bug #12378 fixed - sdf() crashed Scilab.
+
+
 
                     Changes between version 5.3.3 and 5.4.0
                     =======================================
index 78be5a2..e20c0fd 100644 (file)
@@ -203,9 +203,12 @@ void ScilabView::deleteObject(char const* pstId)
 
     // Remove the corresponding handle.
     __handleList_iterator it = m_handleList.find(pstId);
-    m_uidList.erase(it->second);
-    m_handleList.erase(it);
-    
+    if (it != m_handleList.end())
+    {
+        m_uidList.erase(it->second);
+        m_handleList.erase(it);
+    }
+
     deleteDataObject(pstId);
 }
 
@@ -214,8 +217,8 @@ void ScilabView::updateObject(char const* pstId, int iProperty)
     //std::cerr << "[ScilabView] == updateObject UID=" << pstId << " PROPERTY=" << pstProperty << std::endl;
 
     /*
-     ** Take care of update if the value update is ID and object type is a Figure I manage.
-     */
+    ** Take care of update if the value update is ID and object type is a Figure I manage.
+    */
     if (iProperty == __GO_ID__ && m_figureList.find(pstId) != m_figureList.end())
     {
         int iNewId = 0;
diff --git a/scilab/modules/graphic_objects/tests/unit_tests/sdf.dia.ref b/scilab/modules/graphic_objects/tests/unit_tests/sdf.dia.ref
new file mode 100644 (file)
index 0000000..1c849ea
--- /dev/null
@@ -0,0 +1,10 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Sylvestre Ledru
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+aze=sdf();
+assert_checkequal(typeof(aze),"handle");
+assert_checkequal(aze.pixmap,"off");
diff --git a/scilab/modules/graphic_objects/tests/unit_tests/sdf.tst b/scilab/modules/graphic_objects/tests/unit_tests/sdf.tst
new file mode 100644 (file)
index 0000000..d972afe
--- /dev/null
@@ -0,0 +1,12 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2013 - Scilab Enterprises - Sylvestre Ledru
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+aze=sdf();
+assert_checkequal(typeof(aze),"handle");
+assert_checkequal(aze.pixmap,"off");