shithub: puzzles

Download patch

ref: 0b348877e22930bd76c6f00d8d634f7669cd1acb
parent: cf6e4e272c2aa3477f149eb75ffe0436e1a8a2b0
author: Simon Tatham <anakin@pobox.com>
date: Fri Dec 16 13:33:10 EST 2016

Fix missing error highlights (+ array underrun!) in Pearl.

I was accidentally re-checking the value of component_state[comp]
after resetting comp to the special value -1, which caused a failure
to highlight stray path-shaped components if they existed in addition
to a large loop component. (Plus, of course, it's just illegal no
matter what visible behaviour it does or doesn't cause in practice.)

Fixed by adjusting the code to more closely match the version in Loopy
(I wonder how I managed to add two pieces of code in commit b31155b73
without noticing this difference between them).

--- a/pearl.c
+++ b/pearl.c
@@ -1610,8 +1610,6 @@
          */
         for (i = 0; i < w*h; i++) {
             int comp = dsf_canonify(dsf, i);
-            if (component_state[comp] == COMP_PATH)
-                comp = -1; /* part of the 'all paths' quasi-component */
             if ((component_state[comp] == COMP_PATH &&
                  -1 != largest_comp) ||
                 (component_state[comp] == COMP_LOOP &&