Scicos src: vec2var now errors out on empty string/integer matrices 08/17408/1
Paul Bignier [Thu, 29 Oct 2015 08:57:01 +0000 (09:57 +0100)]
 * Empty string or integer matrices don't exist in Scilab, so error out when they are detected

Change-Id: Id32880df6de3e71cf436ce116884166e952c95de

scilab/modules/scicos/src/cpp/vec2var.cpp
scilab/modules/scicos/tests/unit_tests/vec2var.dia.ref
scilab/modules/scicos/tests/unit_tests/vec2var.tst

index 377824c..522d416 100644 (file)
@@ -63,6 +63,12 @@ size_t required_length(T* v)
 template<typename T>
 int decode(const double* const tab, const int tabSize, const int iDims, const int offset, T* &res)
 {
+    if (iDims < 1)
+    {
+        Scierror(999, _("%s: Wrong value for element #%d of input argument #%d: Integer matrix cannot be empty.\n"), vec2varName.c_str(), offset + 3, 1);
+        return -1;
+    }
+
     int  iElements = 1;
     int* pDims = new int[iDims];
     for (int i = 0; i < iDims; ++i)
@@ -133,6 +139,12 @@ int decode(const double* const tab, const int tabSize, const int iDims, const in
 template<>
 int decode(const double* const tab, const int tabSize, const int iDims, const int offset, types::String* &res)
 {
+    if (iDims < 1)
+    {
+        Scierror(999, _("%s: Wrong value for element #%d of input argument #%d: String matrix cannot be empty.\n"), vec2varName.c_str(), offset + 2, 1);
+        return -1;
+    }
+
     int  iElements = 1;
     int* pDims = new int[iDims];
     for (int i = 0; i < iDims; ++i)
index edd4d2f..b215571 100644 (file)
@@ -33,3 +33,9 @@ assert_checkerror("vec2var(c(1:$-1))", refMsg);
 c = var2vec(list(list()));
 refMsg = msprintf(_("%s: Wrong size for input argument #%d: At least %dx%d expected.\n"), "vec2var", 1, 4, 1);
 assert_checkerror("vec2var(c(1:$-1))", refMsg);
+d = [10 0 0 0]';
+refMsg = msprintf(_("%s: Wrong value for element #%d of input argument #%d: String matrix cannot be empty.\n"), "vec2var", 2, 1);
+assert_checkerror("vec2var(d)", refMsg);
+e = [8 1 0 0 0]';
+refMsg = msprintf(_("%s: Wrong value for element #%d of input argument #%d: Integer matrix cannot be empty.\n"), "vec2var", 3, 1);
+assert_checkerror("vec2var(e)", refMsg);
index fd6b006..d98e8c5 100644 (file)
@@ -44,4 +44,10 @@ c = var2vec(list(list()));
 refMsg = msprintf(_("%s: Wrong size for input argument #%d: At least %dx%d expected.\n"), "vec2var", 1, 4, 1);
 assert_checkerror("vec2var(c(1:$-1))", refMsg);
 
+d = [10 0 0 0]';
+refMsg = msprintf(_("%s: Wrong value for element #%d of input argument #%d: String matrix cannot be empty.\n"), "vec2var", 2, 1);
+assert_checkerror("vec2var(d)", refMsg);
 
+e = [8 1 0 0 0]';
+refMsg = msprintf(_("%s: Wrong value for element #%d of input argument #%d: Integer matrix cannot be empty.\n"), "vec2var", 3, 1);
+assert_checkerror("vec2var(e)", refMsg);