api_scilab tests: fix memory errors 59/18059/2
Paul Bignier [Fri, 8 Apr 2016 09:15:31 +0000 (11:15 +0200)]
Change-Id: I0c684ce6001f224822f4ea45ee48a581e4dcb921

scilab/modules/api_scilab/tests/unit_tests/api_c/boolean_test.c
scilab/modules/api_scilab/tests/unit_tests/api_c/double_test.c
scilab/modules/api_scilab/tests/unit_tests/api_c/int_test.c
scilab/modules/api_scilab/tests/unit_tests/stringExample.c
scilab/modules/api_scilab/tests/unit_tests/string_reading_api.c

index c3b0393..ab92a5c 100644 (file)
@@ -17,7 +17,6 @@
 #include "Scierror.h"
 #include "localization.h"
 #include "sciprint.h"
-#include "sci_malloc.h"
 
 const char fname[] = "boolean_test";
 
@@ -32,8 +31,6 @@ int sci_boolean_test(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt
     int in2 = 0;
 
     int* out1 = NULL;
-
-    int* out2dims = NULL;
     int* out2 = NULL;
 
     int out3 = 0;
@@ -79,10 +76,7 @@ int sci_boolean_test(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt
     }
 
     //out2 : 3d matrix of boolean
-    out2dims = (int*)MALLOC(3 * sizeof(int));
-    out2dims[0] = inr1;
-    out2dims[1] = inc1;
-    out2dims[2] = 2;
+    int out2dims[3] = {inr1, inc1, 2};
 
     out[1] = scilab_createBooleanMatrix(env, 3, out2dims);
     scilab_getBooleanArray(env, out[1], &out2);
index 6079d98..007ceee 100644 (file)
@@ -17,7 +17,6 @@
 #include "Scierror.h"
 #include "localization.h"
 #include "sciprint.h"
-#include "sci_malloc.h"
 
 const char fname[] = "double_test";
 
@@ -32,8 +31,6 @@ int sci_double_test(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt o
     double in2 = 0;
 
     double* out1 = NULL;
-
-    int* out2dims = NULL;
     double* out2 = NULL;
 
     double out3 = 0;
@@ -79,10 +76,7 @@ int sci_double_test(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt o
     }
 
     //out2 : 3d matrix of double
-    out2dims = (int*)MALLOC(3 * sizeof(int));
-    out2dims[0] = inr1;
-    out2dims[1] = inc1;
-    out2dims[2] = 2;
+    int out2dims[3] = {inr1, inc1, 2};
 
     out[1] = scilab_createDoubleMatrix(env, 3, out2dims, 0);
     scilab_getDoubleArray(env, out[1], &out2);
index 5b17837..ee75d96 100644 (file)
@@ -17,7 +17,6 @@
 #include "Scierror.h"
 #include "localization.h"
 #include "sciprint.h"
-#include "sci_malloc.h"
 
 const char fname[] = "int_test";
 
@@ -32,8 +31,6 @@ int sci_int_test(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt,
     int in2 = 0;
 
     int* out1 = NULL;
-
-    int* out2dims = NULL;
     int* out2 = NULL;
 
     int out3 = 0;
@@ -79,10 +76,7 @@ int sci_int_test(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt,
     }
 
     //out2 : 3d matrix of int
-    out2dims = (int*)MALLOC(3 * sizeof(int));
-    out2dims[0] = inr1;
-    out2dims[1] = inc1;
-    out2dims[2] = 2;
+    int out2dims[3] = {inr1, inc1, 2};
 
     out[1] = scilab_createInteger32Matrix(env, 3, out2dims);
     scilab_getInteger32Array(env, out[1], &out2);
index 0220f55..f76410d 100644 (file)
@@ -44,7 +44,6 @@ int stringExample(char *fname, void* pvApiCtx)
             iRet = getAllocatedSingleString(pvApiCtx, piAddr, &pstData);
             if (iRet)
             {
-                freeAllocatedSingleString(pstData);
                 return iRet;
             }
 
@@ -66,7 +65,6 @@ int stringExample(char *fname, void* pvApiCtx)
             iRet = getAllocatedMatrixOfString(pvApiCtx, piAddr, &iRows, &iCols, &pstData);
             if (iRet)
             {
-                freeAllocatedMatrixOfString(iRows, iCols, pstData);
                 return iRet;
             }
 
index 17e6254..10ad787 100644 (file)
@@ -109,6 +109,14 @@ int read_string(char *fname, void* pvApiCtx)
     if (sciErr.iErr)
     {
         printError(&sciErr, 0);
+        //free memory
+        FREE(piLen);
+        for (i = 0 ; i < iRows * iCols ; i++)
+        {
+            FREE(pstData[i]);
+        }
+        FREE(pstData);
+        FREE(pstOut);
         return 0;
     }