mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 08:01:30 -07:00
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:
6
solo.c
6
solo.c
@ -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
|
* Non-edge; merge the two dsf classes on either
|
||||||
* side of it.
|
* 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)) {
|
if (pos < cr*(cr-1)) {
|
||||||
int y = pos/(cr-1);
|
int y = pos/(cr-1);
|
||||||
int x = pos%(cr-1);
|
int x = pos%(cr-1);
|
||||||
|
Reference in New Issue
Block a user