shithub: puzzles

Download patch

ref: fba6fc61eb86bcf43a0e25afb59ce539fbe96c7e
parent: 0eb40587eba25100fcd1eb4f2066c2b0816cd7f7
author: Simon Tatham <anakin@pobox.com>
date: Tue Jun 7 15:07:58 EDT 2005

James Harvey (again) points out an array underrun in the new
clash-checking code in Solo. (valgrind confirms it.)

[originally from svn r5916]

--- a/solo.c
+++ b/solo.c
@@ -2238,9 +2238,9 @@
 
 	    /* Mark obvious errors (ie, numbers which occur more than once
 	     * in a single row, column, or box). */
-	    if ((ds->entered_items[x*cr+d-1] & 2) ||
-		(ds->entered_items[y*cr+d-1] & 8) ||
-		(ds->entered_items[((x/r)+(y/c)*c)*cr+d-1] & 32))
+	    if (d && ((ds->entered_items[x*cr+d-1] & 2) ||
+		      (ds->entered_items[y*cr+d-1] & 8) ||
+		      (ds->entered_items[((x/r)+(y/c)*c)*cr+d-1] & 32)))
 		highlight |= 16;
 
 	    draw_number(fe, ds, state, x, y, highlight);