* Bug #14758 fixed - xstringb creates a figure when no exists. 44/18644/2
Adeline CARNIS [Fri, 28 Oct 2016 13:27:24 +0000 (15:27 +0200)]
Change-Id: I76e7619283a5cdef1b4342798aa0ad37ebaab741

scilab/CHANGES.md
scilab/modules/graphics/sci_gateway/c/sci_xstringb.c
scilab/modules/graphics/tests/nonreg_tests/bug_14758.dia.ref [new file with mode: 0644]
scilab/modules/graphics/tests/nonreg_tests/bug_14758.tst [new file with mode: 0644]

index 230ff69..2791fe8 100644 (file)
@@ -202,7 +202,7 @@ or a 3-components vector to set the position in axes coordinates to draw the dat
 * When the view property of Axes object is set at `2d`, the rotation becomes impossible.
 * The zero-pole-gain (zpk) representation added for linear dynamical systems.
 
+
 Help pages:
 -----------
 
@@ -390,6 +390,7 @@ Bug Fixes
 * [#14694](http://bugzilla.scilab.org/show_bug.cgi?id=14694): The list of named colors was misaligned and poorly rendered in `help color_list`
 * [#14710](http://bugzilla.scilab.org/show_bug.cgi?id=14710): fullpath(TMPDIR+...) was bugged on MacOS
 * [#14714](http://bugzilla.scilab.org/show_bug.cgi?id=14714): Crash/Leak when deleting datatip
+* [#14758](http://bugzilla.scilab.org/show_bug.cgi?id=14758): xstringb creates a figure when no exists.
 * [#14779](http://bugzilla.scilab.org/show_bug.cgi?id=14779): When used logarithmic mode using coordinates <=0, xsegs crashed Scilab.
 * [#14784](http://bugzilla.scilab.org/show_bug.cgi?id=14784): Setting field of graphics handle using children($) failed.
 * [#14796](http://bugzilla.scilab.org/show_bug.cgi?id=14796): `ind2sub(dims, [])` returns [] in version 6. Warnings due to a `[]+1` operation have been removed.
index 8e909e2..a1bba24 100644 (file)
@@ -26,6 +26,8 @@
 #include "sciCall.h"
 #include "freeArrayOfString.h"
 #include "localization.h"
+#include "CurrentFigure.h"
+#include "createGraphicObject.h"
 /*--------------------------------------------------------------------------*/
 int sci_xstringb(char *fname, void *pvApiCtx)
 {
@@ -51,6 +53,7 @@ int sci_xstringb(char *fname, void *pvApiCtx)
     long hdlstr = 0;
     double userSize[2] ;
     int textBoxMode = 1; // 0 : off | 1 : centered | 2 : filled
+    int iCurrentFigure = 0;
 
     if ( nbInputArgument(pvApiCtx) <= 0 )
     {
@@ -230,6 +233,14 @@ int sci_xstringb(char *fname, void *pvApiCtx)
 
     userSize[0] = w ;
     userSize[1] = hx ;
+
+    iCurrentFigure = getCurrentFigure();
+
+    if (iCurrentFigure == 0)
+    {
+        iCurrentFigure = createNewFigureWithAxes();
+    }
+
     Objstring (Str, m3, n3, x, y, &angle, rect, autoSize, userSize, &hdlstr, textBoxMode, NULL, NULL, FALSE, TRUE, FALSE, ALIGN_CENTER);
 
     freeArrayOfString(Str, m3 * n3);
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_14758.dia.ref b/scilab/modules/graphics/tests/nonreg_tests/bug_14758.dia.ref
new file mode 100644 (file)
index 0000000..64b3657
--- /dev/null
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+// <-- Non-regression test for bug 14758 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14758
+//
+// <-- Short Description -->
+// xstringb creates a figure when no exists.
+t = "Here is a sample";
+xstringb(0,0,[t; " "; t],1,1);
+e = gce();
+assert_checkequal(e.text, [t; ""; t]);
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_14758.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_14758.tst
new file mode 100644 (file)
index 0000000..5a5a356
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Scilab Enterprises - Adeline CARNIS
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- Non-regression test for bug 14758 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14758
+//
+// <-- Short Description -->
+// xstringb creates a figure when no exists.
+
+t = "Here is a sample";
+xstringb(0,0,[t; " "; t],1,1);
+e = gce();
+assert_checkequal(e.text, [t; ""; t]);