rho.cc: Move the signal-handler setup outside the retry loop.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 28 May 2017 18:03:08 +0000 (19:03 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Wed, 21 Jun 2017 10:45:54 +0000 (11:45 +0100)
Obviously we only really want to do this once.

rho.cc

diff --git a/rho.cc b/rho.cc
index d41a887..651211a 100644 (file)
--- a/rho.cc
+++ b/rho.cc
@@ -198,20 +198,6 @@ int main(int argc, char *argv[])
     tab[i].m = power(a, rep(tab[i].du))*power(b, rep(tab[i].dv));
   }
 
-  // Now we start the random walk...
-  seed();
-  niter = 8ull << (dpbits ? dpbits : (NumBits(l) + 1)/2);
-again:
-  NTL::ZZ_p u{NTL::random_ZZ_p()}, v{NTL::random_ZZ_p()};
-  NTL::GF2E t = power(a, rep(u))*power(b, rep(v));
-
-  hist h[NHIST];
-  unsigned o = 0;
-  unsigned long long k = 0;
-
-  if (!dpbits)
-    for (i = 0; i < NHIST; i++) h[i].k = 0;
-
   stdin_fdflags = fcntl(0, F_GETFL);
   if (stdin_fdflags < 0) barf("fcntl stdin", errno);
   sa.sa_handler = cleanup;
@@ -230,6 +216,20 @@ again:
   if (fcntl(0, F_SETFL, stdin_fdflags | O_NONBLOCK))
     barf("fcntl stdin", errno);
 
+  // Now we start the random walk...
+  seed();
+  niter = 8ull << (dpbits ? dpbits : (NumBits(l) + 1)/2);
+again:
+  NTL::ZZ_p u{NTL::random_ZZ_p()}, v{NTL::random_ZZ_p()};
+  NTL::GF2E t = power(a, rep(u))*power(b, rep(v));
+
+  hist h[NHIST];
+  unsigned o = 0;
+  unsigned long long k = 0;
+
+  if (!dpbits)
+    for (i = 0; i < NHIST; i++) h[i].k = 0;
+
   for (;;) {
     if (k >= niter) goto again;
     if (!(k%CHECK_NITER)) {