Blob Blame History Raw
--- src/AlgebraicCore/TmpFactorDir/linalg/Qsolve.c.orig	2008-12-16 14:05:53.000000000 -0700
+++ src/AlgebraicCore/TmpFactorDir/linalg/Qsolve.c	2018-06-14 14:56:08.127685643 -0600
@@ -321,9 +321,8 @@ int Qsolve(Qmat soln, Qmat M, Qmat rhs)
   for (i=0; i < M->ncols; i++) shape[i] = 0;
   step_size = 3;
   count_down = 3;
-  while(1)
+  for (p = NextPrime(PS); p != 0; p = NextPrime(PS))
   {
-    p = NextPrime(PS);
     FFp = FFctor(p);
     FFselect(FFp);
     /* Skip unsuitable primes */
@@ -374,8 +373,15 @@ int Qsolve(Qmat soln, Qmat M, Qmat rhs)
   FFmat_dtor(solnp);
 
   /* Compute the rank */
-  r = 0;
-  for (i=0; i < M->ncols; i++) r += shape[i];
+  if (p == 0)
+  {
+    r = -1;
+  }
+  else
+  {
+    r = 0;
+    for (i=0; i < M->ncols; i++) r += shape[i];
+  }
   FREE(shape);
 
   return r;