*Bug #14903 fixed - plot2d crashed if the current figure has no axes. 36/19536/2
Adeline CARNIS [Mon, 13 Nov 2017 15:20:50 +0000 (16:20 +0100)]
Change-Id: If710c9d29d1d7dc8dbe4d1447a971d4c8ea6f34c

scilab/CHANGES.md
scilab/modules/graphics/src/c/BuildObjects.c
scilab/modules/graphics/tests/nonreg_tests/bug_14903.tst [new file with mode: 0644]

index c45617b..84890b6 100644 (file)
@@ -435,6 +435,7 @@ the [development mailing list](dev@lists.scilab.org) for a particular toolbox.
 * [#14886](http://bugzilla.scilab.org/show_bug.cgi?id=14886): `Matplot` save/load failed.
 * [#14896](http://bugzilla.scilab.org/show_bug.cgi?id=15272): Using `set` with multiple properties, only the first one was set.
 * [#14901](http://bugzilla.scilab.org/show_bug.cgi?id=14901): WScilex.exe was stopped immediately when launched from Java.
+* [#14903](http://bugzilla.scilab.org/show_bug.cgi?id=14903): `plot2d` crashed if a current figure has no axes.
 * [#14910](http://bugzilla.scilab.org/show_bug.cgi?id=14910): The `plot()` example was displayed in overlay to the existing graphics.
 * [#14922](http://bugzilla.scilab.org/show_bug.cgi?id=14922): The `%onprompt()` special function was not documented.
 * [#14925](http://bugzilla.scilab.org/show_bug.cgi?id=14925): `jdeff`: `invoke_lu()` deleted/corrupted the called java method after an error occured.
index 16b725e..2b597f0 100644 (file)
@@ -83,6 +83,17 @@ GRAPHICS_IMPEXP int getOrCreateDefaultSubwin(void)
         // the current figure,
         iSubWinUID = getCurrentSubWin();
     }
+    else
+    {
+        // If a current figure has no axes
+        int iChildrenCount = 0;
+        int *piChildrenCount = &iChildrenCount;
+        getGraphicObjectProperty(iSubWinUID, __GO_CHILDREN_COUNT__, jni_int, (void **)&piChildrenCount);
+        if (iChildrenCount == 0)
+        {
+            iSubWinUID = createSubWin(getCurrentFigure());
+        }
+    }
 
     return iSubWinUID;
 }
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_14903.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_14903.tst
new file mode 100644 (file)
index 0000000..8aee40e
--- /dev/null
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2017 - ESI - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+// <-- NO CHECK REF -->
+//
+// <-- Non-regression test for bug 14903 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14903
+//
+// <-- Short Description -->
+// plot2d crashed if the figure has no axes.
+
+f = scf();
+f.default_axes = "off";
+delete(f.children(1))
+plot2d()
\ No newline at end of file