Bug 13180 fixed: surf macro did not handle degenerate cases 82/14482/3
Calixte DENIZET [Wed, 30 Apr 2014 09:39:04 +0000 (11:39 +0200)]
Change-Id: I3f03c4cb4e1742229f73fca49884684a276f918e

scilab/CHANGES_5.5.X
scilab/modules/graphics/macros/surf.sci
scilab/modules/graphics/tests/nonreg_tests/bug_13180.dia.ref [new file with mode: 0644]
scilab/modules/graphics/tests/nonreg_tests/bug_13180.tst [new file with mode: 0644]

index 5e7056c..4190975 100644 (file)
@@ -23,6 +23,8 @@ Scilab Bug Fixes
 
 * Bug #12700 fixed - edit_curv (used by CURV_f) was broken.
 
+* Bug #13180 fixed - surf did not handle degenerate cases.
+
 * Bug #13291 fixed - xmltojar([],[],'ja_JP') might lead to a crash when the
                      locale was not available system-wide.
 
index 5a6d80d..a52b9d6 100644 (file)
@@ -8,7 +8,6 @@
 
 
 function surf(varargin)
-
     [lhs,rhs]=argn(0);
 
     if ~rhs
@@ -171,8 +170,6 @@ function surf(varargin)
     end
 
 
-
-
     // P1 is the position of the first PropertyName field.
     Property = P1;
 
@@ -227,10 +224,10 @@ function surf(varargin)
         Property = Property+2;
     end
 
-
-
-
-
+    if isempty(XX) | isempty(YY) | isempty(ZZ) then
+        // Nothing will be drawn so return (see http://bugzilla.scilab.org/13180 )
+        return
+    end
 
     // surf is made now !
     // with default option to simulate the Matlab mode
@@ -250,12 +247,6 @@ function surf(varargin)
     e.cdata_mapping = "scaled"
 
 
-
-
-
-
-
-
     // F.Leray
     // Today: 17.03.05
     // XYZ-DataMode under Matlab seems really bugged (see following samples and read Matlab doc.):
@@ -341,8 +332,6 @@ function surf(varargin)
 
 endfunction
 
-
-
 //
 //function [C] = build_interp_color(C,colormap_size)
 //// C is considered as a data value in Matlab
@@ -369,13 +358,6 @@ function k=getIndexInStringTable(pattern,table)
 
 endfunction
 
-
-
-
-
-
-
-
 function [XX,YY,ZZ,CC] = CreateFacetsFromXYZ(X,Y,Z,current_figure, cur_draw_mode)
 
     if or(size(X)==1) & or(size(Y)==1) // X and Y are vector
@@ -488,10 +470,6 @@ function [XX,YY,ZZ,CC] = CreateFacetsFromXYZ(X,Y,Z,current_figure, cur_draw_mode
 
 endfunction
 
-
-
-
-
 function [XX,YY,ZZ,CC] = CreateFacetsFromXYZColor(X,Y,Z,C,current_figure, cur_draw_mode)
 
     if or(size(X)==1) & or(size(Y)==1) // X and Y are vector
@@ -634,7 +612,6 @@ function [XX,YY,ZZ,CC] = CreateFacetsFromXYZColor(X,Y,Z,C,current_figure, cur_dr
 
 endfunction
 
-
 // If an error occurs in the surf code, we need to catch it
 // order to reset some default values
 function processSurfError(cur_figure, cur_draw_mode)
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_13180.dia.ref b/scilab/modules/graphics/tests/nonreg_tests/bug_13180.dia.ref
new file mode 100644 (file)
index 0000000..8a2edd0
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- TEST WITH GRAPHIC -->
+// <-- Non-regression test for bug 13180 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13180
+//
+// <-- Short Description -->
+// surf macro did not handle degenerate cases.
+nx = 1;
+ny = 10;
+clf;
+x = 1:nx;
+y = 1:ny;
+y = y';
+surf(x, y, x.*.y);
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_13180.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_13180.tst
new file mode 100644 (file)
index 0000000..eb441d3
--- /dev/null
@@ -0,0 +1,24 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2014 - Scilab Enterprises - Calixte DENIZET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- Non-regression test for bug 13180 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13180
+//
+// <-- Short Description -->
+// surf macro did not handle degenerate cases.
+
+nx = 1;
+ny = 10;
+clf;
+x = 1:nx;
+y = 1:ny;
+y = y';
+surf(x, y, x.*.y);
\ No newline at end of file