Remove an inappropriate assertion in validation context.

spec_to_dsf() should not report invalid input by failing an assertion,
because one of the contexts it's called from is validate_desc(), in
which the whole point is to present a useful error message to the user
before getting to the point where an assertion might go off at all.

Game description 5j:c1_5o4_3c,c___aba___cca_a_a_aca now fails
validation cleanly, where previously it would trigger this bug.
This commit is contained in:
Simon Tatham
2014-11-26 21:25:02 +00:00
parent d7a4c52937
commit 078d3c0a6d

6
solo.c
View File

@ -3849,7 +3849,11 @@ static char *spec_to_dsf(const char **pdesc, int **pdsf, int cr, int area)
* Non-edge; merge the two dsf classes on either
* side of it.
*/
assert(pos < 2*cr*(cr-1));
if (pos >= 2*cr*(cr-1)) {
sfree(dsf);
return "Too much data in block structure specification";
}
if (pos < cr*(cr-1)) {
int y = pos/(cr-1);
int x = pos%(cr-1);