* Bug #10276 fixed - Optimization: fix for gateway sci_qp_solve(). 79/12379/4
Bruno Jofret [Thu, 29 Aug 2013 08:13:35 +0000 (10:13 +0200)]
qp_solve() segfaulted with large matrices.

Change-Id: I8bd9375706ac37411a9954683b1804093b1103e8

scilab/CHANGES_5.5.X
scilab/modules/optimization/sci_gateway/c/sci_qp_solve.c

index 69cf43c..8e3a26e 100644 (file)
@@ -358,6 +358,8 @@ Bug fixes
 * Bug #10269 fixed - qp_solve can now take up to 5 output arguments. The last one is an error flag,
                      if it is present, then the function will issue a warning instead of an error.
 
+* Bug #10276 fixed - qp_solve() segfaulted with large matrices.
+
 * Bug #10287 fixed - Added an error message for complex expression as input argument of integrate function.
 
 * Bug #10305 fixed - Comparison of lists with empty items returned an error message.
index 4918339..74b8bf6 100644 (file)
@@ -287,6 +287,7 @@ int sci_qp_solve(char *fname, unsigned long fname_len)
     if ((work = (double *)MALLOC(lw * sizeof(double))) == NULL)
     {
         Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+        return 1;
     }
     /* change the sign of  C and b.*/
     *ierr = 0;
@@ -311,6 +312,7 @@ int sci_qp_solve(char *fname, unsigned long fname_len)
             FREE(work);
             work = NULL;
             Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+            return 1;
         }
         if ((ind = (int *)MALLOC((m + Sp.nel) * sizeof(int))) == NULL)
         {
@@ -319,6 +321,7 @@ int sci_qp_solve(char *fname, unsigned long fname_len)
             FREE(R);
             R = NULL;
             Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
+            return 1;
         }
 
         // Transpose the sparse matrix A