Adam D. Lopresto and Phil Bordelon independently point out a
[sgt/puzzles] / latin.c
diff --git a/latin.c b/latin.c
index 22488a7..45096e4 100644 (file)
--- a/latin.c
+++ b/latin.c
@@ -956,12 +956,12 @@ void latin_solver_debug(unsigned char *cube, int o)
 #ifdef STANDALONE_SOLVER
     if (solver_show_working) {
         struct latin_solver ls, *solver = &ls;
-        unsigned char *dbg;
+        char *dbg;
         int x, y, i, c = 0;
 
         ls.cube = cube; ls.o = o; /* for cube() to work */
 
-        dbg = snewn(3*o*o*o, unsigned char);
+        dbg = snewn(3*o*o*o, char);
         for (y = 0; y < o; y++) {
             for (x = 0; x < o; x++) {
                 for (i = 1; i <= o; i++) {
@@ -1092,6 +1092,7 @@ digit *latin_generate(int o, random_state *rs)
        for (j = 0; j < o; j++)
            col[j] = num[j] = j;
        shuffle(col, j, sizeof(*col), rs);
+       shuffle(num, j, sizeof(*num), rs);
        /* We need the num permutation in both forward and inverse forms. */
        for (j = 0; j < o; j++)
            numinv[num[j]] = j;
@@ -1175,7 +1176,7 @@ int latin_check(digit *sq, int order)
     tree234 *dict = newtree234(latin_check_cmp);
     int c, r;
     int ret = 0;
-    lcparams *lcp, lc;
+    lcparams *lcp, lc, *aret;
 
     /* Use a tree234 as a simple hash table, go through the square
      * adding elements as we go or incrementing their counts. */
@@ -1187,7 +1188,8 @@ int latin_check(digit *sq, int order)
                lcp = snew(lcparams);
                lcp->elt = ELT(sq, c, r);
                lcp->count = 1;
-               assert(add234(dict, lcp) == lcp);
+                aret = add234(dict, lcp);
+               assert(aret == lcp);
            } else {
                lcp->count++;
            }