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